布尔逻辑问题-两种不同的方法

问题描述 投票:0回答:1

我想出了两种解决问题的方式,虽然两种方式看起来都很合理,但只有一种有效。基本上,如果所有尚未被淘汰的剩余候选人都具有相同的最小投票数,则该函数将返回true,否则返回false。这两种方法如下:

1

bool is_tie(int min)
{
    for (int i = 0; i < candidate_count; i++)
    {
        if (!candidates[i].eliminated)
        {
            if (candidates[i].votes != min)
                return false;
        }
    }
    return true;   
}

2

bool is_tie(int min)
{
    for (int i = 0; i < candidate_count; i++)
    {
        if (!candidates[i].eliminated)
        {
            if (candidates[i].votes == min)
                return true;
        }
    }
    return false;   
}

我在上面的两个代码函数之间看不到任何逻辑差异。那为什么2号错了?

boolean cs50 boolean-logic boolean-operations booleanquery
1个回答
1
投票

如果任何一位候选人对最低票数进行了投票,则您标记为1的代码将返回false。

如果任何一位候选人对最低票数表示赞成,您的标记为2的代码将返回true。

因此,考虑有两名候选人,一名候选人投票了最低要求,另一名候选人没有投票。标记为1的代码将返回false,因为其中一位候选人的投票数比最低投票数高。您的标记为2的代码返回true,因为一位候选人的投票率最低。

© www.soinside.com 2019 - 2024. All rights reserved.