cs50 pset3 tideman lock_pairs和打印获胜者无法正常工作。我无法修复它

时间:2020-09-28 11:03:17

标签: c cs50

lock_pairs如果创建周期有效则跳过最后一对 让所有lock_pair休息,打印赢家将无法工作。我无法修复它。

bool check(int x, int y, int i)    //check for cycle // returns true if no cycle

{

    for (int k = i - 1; k >=0; k--)

    {

        if (pairs[i].loser == pairs[k].winner)

        {
            return false;
        }
    }
    return true;

}


// Lock pairs into the candidate graph in order, without creating cycles

void lock_pairs(void)


{

    locked[pairs[0].winner][pairs[0].loser] = true;
    locked[pairs[1].winner][pairs[1].loser] = true;

    for (int i = 2; i < pair_count; i++)
    {
        if (check(pairs[i].winner, pairs[i].loser, i) == true)
        {
            locked[pairs[i].winner][pairs[i].loser] = true;
        }
    }

    return;
}

// Print the winner of the election

void print_winner(void)
{
    // TODO

    for (int i = 0; i < pair_count; i++)
    {
        if(locked[pairs[i].winner][pairs[i].loser] == true)
        {
            if (win(i) == true)
            {
                printf("%s", candidates[pairs[i].winner]);
            }
        }
    }
    return;
}

bool win(int a)
{
    for (int j = 0; j < pair_count; j++)

    {

        if (locked[pairs[j].winner][pairs[j].loser] == true)

        {

            if (pairs[a].winner == pairs[j].loser)

            {

                return false;

            }
        }
    }
    return true; 
}

0 个答案:

没有答案