【问题标题】:cs50 tideman lock_paiors function issuecs50 潮人 lock_paiors 功能问题
【发布时间】:2021-01-17 04:36:27
【问题描述】:

大家好,我在 pset3 上的 lockpairs functinog 遇到问题,潮人希望得到一些反馈

bool checkcycle(int from, int to)
{
   if(from == to)
   {
       return true;
   }
   int i;
   for (i = 0; i < candidate_count; i++)
   {
       if(locked[from][i])
       {
           checkcycle(i,to);
       }
   }
   return false;
}


void lock_pairs(void)
{
   for (int i = 0; i < candidate_count; i++)
   {
      if(!checkcycle(pairs[i].winner , pairs[i].loser))
      {
          locked[pairs[i].winner][pairs[i].loser] = true;
      }
    return;
   }
}

:( lock_pairs 在没有循环时锁定所有对 lock_pairs 没有锁定所有对 :( lock_pairs 如果创建循环则跳过最后一对 lock_pairs 没有正确锁定所有非循环对 :( lock_pairs 跳过中间对,如果它创建一个循环 lock_pairs 没有正确锁定所有非循环对

【问题讨论】:

    标签: cs50


    【解决方案1】:

    您的 checkcycle 功能只需要稍作调整。我会将from 更改为winner 并将to 更改为loser。我认为这会更容易理解。给定一对,您将调用checkcycle(winner, loser)。在检查 winner == loser 后,您应该遍历所有对,检查 loser 是否是 winner,并调用 checkcycle(winner, loser),传递相同的原始获胜者,以及失败者的失败者

    【讨论】:

      猜你喜欢
      • 2020-12-02
      • 1970-01-01
      • 2022-10-22
      • 1970-01-01
      • 2022-10-09
      • 1970-01-01
      • 2022-11-11
      • 1970-01-01
      • 2016-11-15
      相关资源
      最近更新 更多