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

C語言邏輯謎題:誰殺了比爾? (布林代數求解)

     編輯:關於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說謊 ⇔ k!=d)

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

窮舉驗證 (C 代碼)

#include 
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

邏輯推導

  1. 假設 C 是兇手 (k=c):
  2. A: 真 (c!=a)
  3. B: 真 (c==c)
  4. C: 偽 (c!=d)
  5. D: 真 (c!=d → C說謊)
  6. 真話數 = 3 ✓

其他假設均不滿足 3 真 1 假。

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