【问题标题】:CS50 Tideman LockingCS50潮汐锁定
【发布时间】:2022-10-22 04:40:20
【问题描述】:

因此,我试图从 CS50 课程中找出我所看到的一些 Tideman 问题的解决方案。我的疑问如下>>

我们有这个代码>>

// Test for cycle by checking arrow coming into each candidate
bool cycle(int end, int cycle_start)
{
    // Return true if there is a cycle created (Recursion base case)
    if (end == cycle_start)
    {
        return true;
    }
    // Loop through candidates (Recursive case)
    for (int i = 0; i < candidate_count; i++)
    {
        if (locked[end][i])
        {
            if (cycle(i, cycle_start))
            {
                return true;
            }
        }
    }
    return false;
}

在这种情况下就行了>>

if (locked[end][i])

我的理解是这意味着locked[end][i] 是真的,这意味着那里有一个箭头。我想我明白了。

但我记得 Locked 数组 Locked[max][max] 的值为 false 作为每对锁定的值。

考虑到所有对都是“假的”,那么我的理解是这里的条件>>

if (locked[end][i])

永远不会遇到,因为在通过检查循环功能之前,一切都是错误的。

我错了吗?如果是这样,请帮助我了解递归函数是如何工作的。

谢谢你。

【问题讨论】:

    标签: cs50


    【解决方案1】:

    调用循环的 lock_pairs 在找到边缘时将边缘设置为真,因此所有边缘都仅在第一次边缘检查时为 flasi。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-04
      • 2012-04-22
      • 1970-01-01
      • 2020-12-02
      相关资源
      最近更新 更多