程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C >> C語言基礎知識 >> 加注解的紙條問題

加注解的紙條問題

編輯:C語言基礎知識

  有a。b。c。d。e,每個人額頭上貼了一張或黑或白的紙。5人對做,都可看到其他人的顏色,但不知道自己的。5人相互觀察: A說 有3個貼白紙,1人貼黑紙 B說 四人都是貼的黑紙 C說 有1個人貼白紙,其他三人貼黑紙 D說 4人都是白紙E什麼也沒說 現在已知額頭黑紙的人都說的是謊話,貼白紙的人說的是實話。編程,輸出這五人中額頭貼白紙得人選和貼黑紙的人選。各位哥哥姐姐幫幫忙謝謝
   
  我用數組a[1],a[2],a[3],a[4],a[5]表示a,b,c,d,e;
  再用1,0分別表示白,黑,即a[1]=0,表示a是白色紙, #include<stdio.h>
  int a[6];
  judg(int i)
  { int b;
   if(i>5)
    { b=1;
      if(b)
      {if(a[1]==0)
        {if((a[2]+a[3]+a[4]+a[5])==3)b=0;else b=1;}//表示b,c,d,e中有3個白色紙則b=0,否則b=1;
       else
        {if((a[2]+a[3]+a[4]+a[5])==3)b=1;else b=0;} //表示b,c,d,e中有3個白色紙則b=1,否則b=0;     }
      if(b)
      {if(a[2]==0)
        {if((a[1]+a[3]+a[4]+a[5])==0)b=0;else b=1;} //表示a,c,d,e中有3個白色紙則b=0,否則b=1;
       else
        {if((a[1]+a[3]+a[4]+a[5])==0)b=1;else b=0;} //表示a,c,d,e中有3個白色紙則b=1,否則b=0;     }
      if(b)
      {if(a[3]==0)
        {if((a[1]+a[2]+a[4]+a[5])==1)b=0;else b=1;} //表示a,b,d,e中有3個白色紙則b=0,否則b=1;
       else
        {if((a[1]+a[2]+a[4]+a[5])==1)b=1;else b=0;} //表示a,b,d,e中有3個白色紙則b=1,否則b=0;     }
      if(b)
      {if(a[4]==0)
        {if((a[1]+a[2]+a[3]+a[5])==4)b=0;else b=1;} //表示a,b,c,d中有3個白色紙則b=0,否則b=1;
       else
        {if((a[1]+a[2]+a[3]+a[5])==4)b=1;else b=0;}  //表示a,b,c,d中有3個白色紙則b=1,否則b=0;     }
         if(b)
       {
        if(a[1]==0)printf("a:black ");else printf("a:white ");
        if(a[2]==0)printf("b:black ");else printf("b:white ");
        if(a[3]==0)printf("c:black ");else printf("c:white ");
        if(a[4]==0)printf("d:black ");else printf("d:white ");
        if(a[5]==0)printf("e:black ");else printf("e:white ");
        printf(" ");
       }
    
    }
   else
    {
        a[i]=0;judg(i+1);
        a[i]=1;judg(i+1);
    }
  }
     main()
    {
    judg(1);
    }
  
 
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved