首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C >> 關於C

C 語言邏輯推理題:誰是兇手(殺死比爾 5)

     編輯:關於C

題目

四嫌疑人供詞:

  • A:不是我;
  • B:是 C;
  • C:是 D;
  • D:C 在胡說。

已知 3 人說真話,1 人說假話。編程找出兇手。

邏輯建模

設兇手為 k ∈ {a,b,c,d}。每人陳述真值:

  • A:k != 'a'
  • B:k == 'c'
  • C:k == 'd'
  • D:k != 'd' (C 說是 D,D 說 C 胡說 ⇔ 兇手不是 D)

真話數 = (k!='a') + (k=='c') + (k=='d') + (k!='d') == 3

代碼實現

#include <stdio.h>

int main() {
    for (char k = 'a'; k <= 'd'; ++k) {
        int truth = (k != 'a') + (k == 'c') + (k == 'd') + (k != 'd');
        if (truth == 3) {
            printf("killer = %c\n", k);
        }
    }
    return 0;
}

輸出與驗證

killer = c

驗證:兇手是 C → A 真(非A)、B 真(是C)、C 假(非D)、D 真(非D) → 3 真 1 假 ✓

擴展思路

此類邏輯推理題均可建模為「遍歷候選,計算滿足條件的真值表達式計數」,適用於更複雜的多人多條件場景。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved