首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CS50 Tideman锁

CS50 Tideman锁
EN

Stack Overflow用户
提问于 2022-10-01 15:05:13
回答 1查看 122关注 0票数 0

因此,我试图找出我们的东西,到目前为止,我已经看到了一些解决CS50课程提德曼问题的方法。我怀疑的是following>>

我们有这个code>>

代码语言:javascript
复制
// 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;
}

在这个例子中,>>行

代码语言:javascript
复制
if (locked[end][i])

我的理解是,这意味着锁定是真实的,这意味着那里有一个箭头。我想我明白了。

但我记得锁定的数组Lockedmax的值为false,作为锁定的每对的值。

考虑到所有对都是"false",那么我的理解是条件here>>

代码语言:javascript
复制
if (locked[end][i])

永远不会满足,因为一切都是错误的,总是在通过检查周期函数之前。

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

谢谢。

EN

回答 1

Stack Overflow用户

发布于 2022-10-21 20:40:20

lock_pairs调用循环将边设置为true,因为它找到了它们,因此,只有在第一次边缘检查时,所有这些都是假的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73919381

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档