推理程式設計
阿新 • • 發佈:2018-11-05
1.
5位運動員參加了10米臺跳水比賽,有人讓他們預測比賽結果
A選手說:B第二,我第三;
B選手說:我第二,E第四;
C選手說:我第一,D第二;
D選手說:C最後,我第三;
E選手說:我第四,A第一;
比賽結束後,每位選手都說對了一半,請程式設計確定比賽的名次。
程式碼:
#include <stdio.h> #include <stdlib.h> int main(){ //A選手說:B第二,A第三; //B選手說:B第二,E第四; //C選手說:C第一,D第二; //D選手說:C最後,D第三; //E選手說:E第四,A第一; //A 3 B 1 C 5 D 2 E 4 //利用for迴圈 for (int a = 1; a < 6; ++a){ for (int b = 1; b < 6; ++b){ for (int c = 1; c < 6; ++c){ for (int d = 1; d < 6; ++d){ for (int e = 1; e < 6; ++e){ if (((b == 2) + (a == 3) == 1) && ((b == 2) + (e == 4) == 1) && ((c == 1) + (d == 2) == 1) && ((c == 5) + (d == 3) == 1) && ((e == 4) + (a == 1) == 1) == 1 && //a、b、c、d、e各不相同 a*b*c*d*e == 120){ printf("A:%d\n", a); printf("B:%d\n", b); printf("C:%d\n", c); printf("D:%d\n", d); printf("E:%d\n", e); } } } } } } system("pause"); return 0; }
執行結果:
2.
日本某地發生了一件謀殺案,警察通過排查確定殺人凶手必為4個
嫌疑犯的一個。以下為4個嫌疑犯的供詞。
A說:不是我。
B說:是C。
C說:是D。
D說:C在胡說
已知3個人說了真話,1個人說的是假話。
現在請根據這些資訊,寫一個程式來確定到底誰是凶手。
程式碼:
#include <stdio.h> #include <stdlib.h> //A說:不是A //B說:是C //C說:是D //D說:不是D //3真,1假 //C是凶手 //假設凶手為1 int main(){ for (int a = 0; a < 2; ++a){ for (int b = 0; b < 2; ++b){ for (int c = 0; c < 2; ++c){ for (int d = 0; d < 2; ++d){ if ((a == 1) + (b == 1) + (c == 1) + (d == 1) == 1 //只有一人為凶手 &&(a==0)+(c==1)+(d==1)+(d==0)==3){ if (a == 1){ printf("凶手為:A\n"); } else if (b == 1){ printf("凶手為:B\n"); } else if (c == 1){ printf("凶手為:C\n"); } else if (d == 1){ printf("凶手為:D\n"); } } } } } } system("pause"); return 0; }
執行結果: