cs50 tideman lock_paiors Funktionsproblem

Oct 01 2020

Hallo Leute, ich habe ein Problem mit meinem Lockpairs-Functinog auf pset3. Tideman würde mich über Feedback freuen

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 sperrt alle Paare, wenn keine Zyklen vorhanden sind lock_pairs hat nicht alle Paare gesperrt :( lock_pairs überspringt das letzte Paar, wenn es einen Zyklus erstellt lock_pairs hat nicht alle nicht zyklischen Paare korrekt gesperrt :( lock_pairs überspringt das mittlere Paar, wenn es ein Zyklus erstellt hat lock_pairs nicht korrekt Sperren Sie alle nicht zyklischen Paare

Antworten

birojow Nov 23 2020 at 21:16

Ihre Checkcycle-Funktion muss nur geringfügig angepasst werden. Ich würde fromzu winnerund tozu wechseln loser. Ich denke, es wäre leichter zu verstehen. Wenn Sie ein Paar haben, werden Sie anrufen checkcycle(winner, loser). Wenn nach der Überprüfung winner == loser, sollten Sie überprüfen alle Paare durchlaufen , wenn loserdas ist winner, und mit der Aufforderung checkcycle(winner, loser), die gleichen ursprünglichen Siegern vorbei, und der Verlierer des Verlierers