【发布时间】:2021-08-27 21:22:50
【问题描述】:
无法找出此代码失败的测试用例。除此错误外均为绿色:CS50- pset3-tideman: lock_pairs 未正确锁定所有非循环对。 我需要知道这里的逻辑缺陷,而不是解决方案。
// 将对按顺序锁定到候选图中,不创建循环
void lock_pairs(void)
{
// TODO
for (int i = 0; i < pair_count; i ++)
{
if(!is_circle(pairs[i].loser, pairs[i].winner))
{
locked[pairs[i].winner][pairs[i].loser] = true;
}
}
return;
}
bool is_circle(int loser, int winner)
{
if (loser == winner)
{
return true;
}
for (int i = 0; i < pair_count; i ++)
{
if (locked[loser][i])
{
return is_circle(i, winner);
}
}
return false;
}
【问题讨论】: