CS50的pset3 Tideman ...我的锁定功能似乎不起作用

费尔南多·贝拉斯科·博里亚

我一直在尝试解决lock_pairs函数遇到的问题。我使用递归来验证我们是否具有遵循循环的路径(基本上,遵循失败者的路径,以查看其是否与另一候选者对决,并检查是否回到起点,有效地形成了循环)。

但是我有一个问题,因为在使用check50验证我的解决方案时它返回了一个错误,而且我很迷失,甚至不知道什么地方出了问题,我觉得我已经检查了所有内容,但仍然无法正常工作。

这是来自check50的错误:

:( lock_pairs skips final pair if it creates cycle
lock_pairs did not correctly lock all non-cyclical pairs

这是代码:

    // To be used in lock_pairs to avoid cycles, true means cycles, false means we good
bool check_cycles(int loser_ind, int winner_ind)
{
    // Base case, if the loser path returns to the winner, we have a circle
    if (loser_ind == winner_ind)
    {
        return true;
    }

    for (int i = 0; i < candidate_count; i++)
    {
        if (locked[loser_ind][i]) // If the loser has an edge over another candidate, i.e, if the loser candidate won against another candidate
        {
            return check_cycles(i, winner_ind); // We'll check if that other candidate that lost has a winning path to another candidate
        }
    }

    return false;

}

// Lock pairs into the candidate graph in order, without creating cycles
void lock_pairs(void)
{
    // Let's loop on all pairs
    for (int i = 0; i < pair_count; i++)
    {
        // If we didn't created a cycle, we'll register the lock
        if (!check_cycles(pairs[i].loser, pairs[i].winner))
        {
            locked[pairs[i].winner][pairs[i].loser] = true; // It means the i-th pair winner candidate won over i-th pair losing candidate
        }
    }

    return;
}
比罗乔

也许正在改变

return check_cycles(i, winner_ind);

if (check_cycles(i, winner_ind)){
    return true;
}

会解决它

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

CS50 pset4滤镜灰度轮功能问题

卡在CS50 PSET3频率中

CS50 Pset3音乐-sizeof(string)在做什么?

为什么此SQL查询不起作用?CS50 Pset7-电影

CS50径流程序正在运行,但check50表示不起作用

CS50 pset4中的模糊功能无法完全正常工作

CS50 Pset3错误:预期的标识符或'('

CS50 PSet4-模糊滤镜,我正在获得黑色图像作为输出

检查有向图CS50 tideman中是否存在循环

CS50 tideman-:(如果创建循环,lock_pairs将跳过最后一对

CS50复数PSET3-代码似乎可以正常工作,但check50表示相反

Tideman中的投票功能(CS50的pset 3)

CS50 pset1贪婪不起作用

我的输出始终显示“。”。在我期望的输出之前。CS50 PSET2

CS50x pset3(为什么我的程序未通过Check50?)

简单Cypher程序不起作用(CS50)

如何实现cs50的pset3频率并理解notes.c

如何修复我的 cs50 pset 1 mario 代码不太舒服

如何正确打印 JPEG 文件的字节?- CS50 PSET3 恢复

cs50 web pset 1 中的登录表单根本不起作用(使用烧瓶)

根据 CS50 的 pset3 潮汐人中的 check50 排序对不起作用

CS50 pset3 多个程序为 print_winner 函数给出错误(没有打印两个选举获胜者)

CS50 Pset4 Filter(不太舒服)模糊功能算法问题

CS50 Filter(less) 模糊功能

我在退出时有字节在使用,但似乎无法确定确切位置。(cs50, pset5)

CS50 pset4 过滤器(不太舒服) - 模糊功能不起作用

CS50 pset4 - 滤镜(不太舒服),棕褐色功能

CS50 - PSET3 跑掉 - 無法理解投票功能,更具體地說,偏好[voter][rank] = i; 做

为什么我在 CS50 的 filter(less) (PSET 4) 中的模糊功能没有返回正确的值?