黑白貼紙問題
阿新 • • 發佈:2018-12-31
有A,B,C,D,E 5個人,每個人額頭上都貼了一張黑或白的紙。5個人對坐,每個人都可以看到其他人額頭上的紙的顏色。5人相互觀察後,
A說:“我看見有3人額頭上貼的是白紙,1人額頭上貼的是黑紙。”
B說:“我看見其他3人額頭上貼的都是黑紙。”
C說:“我看見1人額頭上貼的是白紙,其他3人額頭上貼的是黑紙。”
D說:“我看見4人額頭上貼的都是白紙。”
E什麼也沒說。
現在已知額頭上貼黑紙的人說的都是謊話,額頭貼白紙的人說的都是實話。問這5人誰的額頭貼白紙,誰的額頭貼黑紙?
預期輸出結果為C.E貼的是白紙,其他人貼的是黑紙。
如用變數a,b,c,d,e分別表示A,B,C,D,E每個人額頭上所貼的顏色,變數值為0代表是黑色、1代表是白色。
程式碼如下:
#include <stdio.h> int main() { int a,b,c,d,e=1; for(a=0;a<=1;a++) for(b=0;b<=1;b++) for(c=0;c<=1;c++) for(d=0;d<=1;d++) { if(a&&(b+c+d+e==3)||!a&&(b+c+d+e!=3)) if(b&&(a+c+d+e==0)||!b&&(a+c+d+e!=0)) if(c&&(b+a+d+e==1)||!c&&(b+a+d+e!=1)) if(d&&(b+c+a+e==4)||!d&&(b+c+a+e!=4)) printf("C E 是 %d %d;A B C D E是%d %d %d %d %d\n",c,e,a,b,c,d,e); } printf("0代表貼的是黑色;1代表貼的是白色。\n"); return 0; }