簡體   English   中英

Boolean 邏輯問題 - 兩種不同的方法

[英]Boolean Logic Question - Two different methods

我想出了兩種不同的解決問題的方法,雖然兩種方法看起來都合乎邏輯,但只有一種方法有效。 基本上,function 將返回 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個是錯誤的呢?

如果任何一位候選人投了最低票以外的任何票,則標記為 1 的代碼將返回 false。

如果任何一位候選人投了最低票,則標記為 2 的代碼返回 true。

所以考慮一下有兩名候選人的情況,一名投最低票,另一名沒有投最低票。 您標記為 1 的代碼返回 false,因為一名候選人的投票不是最低投票數。 您標記為 2 的代碼返回 true,因為一位候選人確實投了最低票。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM