我想出了两种解决问题的方式,虽然两种方式看起来都很合理,但只有一种有效。基本上,如果所有尚未被淘汰的剩余候选人都具有相同的最小投票数,则该函数将返回true,否则返回false。这两种方法如下:
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;
}
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号错了?
如果任何一位候选人对最低票数进行了投票,则您标记为1的代码将返回false。
如果任何一位候选人对最低票数表示赞成,您的标记为2的代码将返回true。
因此,考虑有两名候选人,一名候选人投票了最低要求,另一名候选人没有投票。标记为1的代码将返回false,因为其中一位候选人的投票数比最低投票数高。您的标记为2的代码返回true,因为一位候选人的投票率最低。