利用 Java 程序來推理『到底誰會來參加會議?』

各位小夥伴準備好了嗎?java

那麼開始咱們今天的分享吧~c++

 

上一次娜娜被一道入門級的邏輯推理題虐的死去活來,回去以後真的是氣的不行不行的。看到了不少小夥伴的留言,表示和娜娜的狀況是同樣的。blog

 

 

娜娜立志要帶領小夥伴們學好 java ,怎能被這些題目打到,因此今天娜娜和你們一塊兒來作一道邏輯推理題,鍛鍊一下思惟如何?編譯器

 

 

請看題:編譯

 

有人邀請 A,B,C,D,E,F 6我的參加一項會議,這6我的有些奇怪,由於他們有不少要求,已知: 入門

 

  1)A,B兩人至少有1人蔘加會議;class

  2)A,E,F 3人中有2人蔘加會議;基礎

  3)B和C兩人一致決定,要麼兩人都去,要麼兩人都不去;搜索

  4)A,D兩人中只1人蔘加會議;循環

  5)C,D兩人中也只要1人蔘加會議;

  6)若是D不去,那麼E也決定不去。

 

那麼最後究竟有哪幾我的參加了會議呢?

 

這道題是很基礎的邏輯推理題了,是否是已經準備好拿起筆來推理了呢?可是小夥伴們呀~今天咱們不是要用本身的大腦來推理,而是要用 Java 程序y呦~因此請把手上的小本本合起來,打開編譯器,打開記事本也行,咱們開始~

 

看到這個題的第一想法就是,沒有別的簡便方法,直接用暴力搜索,先把全部的可能性都想到,而後把條件都寫出來,知足全部條件的就是正確答案。

 

 

0 表明不去參加會議,1 表明去參見會議,而後我們按照已知條件來寫條件語句。

 

 

在把這些條件放進去進行循環就能夠了。

 

 

得出結果:

 

 

程序的功能已經實現了,可是代碼看着有些繁瑣,咱們簡化一下代碼:

 

上面是正向的思惟,知足條件的的狀況來設置條件代碼,下面咱們用逆向的思惟,反着來排除全部的不正確的狀況,剩下的就是正確答案:

 

 

簡化以後咱們就只須要考慮錯誤的狀況,你只要知足錯誤的條件咱們就返回 false,最後剩到最後的就是正確答案了!

 

 

最後結果:

 

 

完整代碼:

 

 

public class Meeting2 {
 public static void main(String[] args) {
   for(int a=0;a<2;a++){// 0表明不去,1表明去
     for(int b=0;b<2;b++){
       for(int c=0;c<2;c++){
         for(int d=0;d<2;d++){
           for(int e=0;e<2;e++){
             for(int f=0;f<2;f++){
               if (tm(a,b,c,d,e,f)) {
                 System.out.println("a="+a+",b="+b+",c="+c+",d="+d+",e="+e+",f="+f);
               }
             }
           }
         }
       }
     }
   }
 }  
 private static boolean tm(int a,int b, int c, int d, int e, int f){
   if((a+b)==0){
     return false;
   }
   if((a+e+f)!=2){
     return false;
   }
   if((b+c)==1){
     return false;
   }
   if((a+d)!=1){
     return false;
   }
   if((c+d)!=1){
     return false;
   }
   if(d==0&&e==1){
     return false;
   }
   return true;    
 }
}

 

相信小夥伴們之後在遇到這類問題

就不會一點想法都沒有了

那麼今天的分享就到這裏了

小夥伴們再見了

拜拜

相關文章
相關標籤/搜索