1. 程式人生 > >黑白貼紙問題

黑白貼紙問題

有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;
}