PSET3-Tideman-锁定对

问题描述

我正在寻找一些帮助,以检查我在此问题集上的逻辑。 锁定功能选择: 从最强对开始,按顺序(从最强到最弱胜利)浏览候选对(pair []),并将每对“锁定”到候选图,只要锁定该对不会产生循环在图中。 “锁定”表示将“真”值填充到二维数组(布尔锁定[] [])中。当候选人A赢得候选人B程序时,应该锁定[A] [B] = true;。 我的代码“锁定了第一对(pairs [0])。然后转到下一对(pairs [1]),并检查该对的输家(pairs [1] .loser)是否与前一对的输家不同。 (pairs [0] .winner)。如果不是,它将锁定当前对(pairs [1])。依此类推。程序检查所有以前的获胜者,并将它们与当前的失败者进行比较。 从check50我得到如下信息: :( lock_pairs在没有循环时锁定所有对 lock_pairs没有锁定所有对 :)如果创建周期,lock_pairs将跳过最后一对 :( lock_pairs如果创建周期则跳过中间对 lock_pairs没有正确锁定所有非周期性对 我只是不知道这里出了什么问题。

Mu代码:

// Lock pairs into the candidate graph in order,without creating cycles
void lock_pairs(void)
{
int counter;
locked[pairs[0].winner][pairs[0].loser] = true;
for (int i = 1; i < pair_count; i++)
{
    counter = 0;
    for (int j = 0; j < i; j++)
    {
        if (pairs[i].loser == pairs[j].winner)
        {
            counter++;
        }
        else
        {

        }
    }
    if ( counter != 0)
    {

    }
    else
    {
        locked[pairs[i].winner][pairs[i].loser] = true;
        printf("locked[%i][%i] = %d \n",pairs[i].winner,pairs[i].loser,locked[pairs[i].winner] 
[pairs[i].loser]);
    }

}
for (int a = 0; a< candidate_count; a++)
{
    for (int b = 0; b < candidate_count; b++)
    {
        printf("locked[%i][%i] = %d \n",a,b,locked[a][b]);
    }
}

return;

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)