藍橋杯 扶老奶奶過街

藍橋杯 扶老奶奶過街
一共有5個紅領巾,編號分別爲A、B、C、D、E,老奶奶被他們其中一個扶過了馬路。

  五個紅領巾各自說話:

  A :我和E都沒有扶老奶奶

  B :老奶奶是被C和E其中一個扶過大街的

  C :老奶奶是被我和D其中一個扶過大街的

  D :B和C都沒有扶老奶奶過街

  E :我沒有扶老奶奶


  已知五個紅領巾中有且只有2個人說的是真話,請問是誰扶這老奶奶過了街?

  若有多個答案,在一行中輸出,編號之間用空格隔開。


  例如
  A B C D E(這顯然不是正確答案)
解析:將ABCDE視爲一個數組a[5],1表示扶了老奶奶,0表示沒扶。先假設他們都沒有扶老奶奶,將a賦爲0,然後依次假設其中一位扶了老奶奶,賦爲1,這樣a[i]=1就會通過說真話的兩個人的判斷:
代碼如下:
#include<iostream>
using namespace std;  
int main()  
{  
    int a[5],sum;  
    for(int i=0; i<5; i++)  
    {  
        sum=0;//記錄說真話的個數  
        for(int j=0;j<5;j++)
        a[j]=0;
        a[i]=1;  
        if(!a[0]&&!a[4])//A說的話  
            sum++;  
        if(a[2]||a[4])//B說的話  
            sum++;  
        if(a[2]||a[3])//C  
            sum++;  
        if(!a[1]&&!a[2])//D  
            sum++;  
        if(!a[4])//E  
            sum++;  
        if(sum==2)//正好兩個人說了真話  
            printf("%c ",'A'+i);  
    }  
    return 0;  
} 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章