[英]Boolean Logic Question - Two different methods
我想出了兩種不同的解決問題的方法,雖然兩種方法看起來都合乎邏輯,但只有一種方法有效。 基本上,function 將返回 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,因為一位候選人確實投了最低票。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.