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

各位小伙伴準備好了嗎?

那么開始我們今天的分享吧~

上一次娜娜被一道入門級的邏輯推理題虐的死去活來,回去之后真的是氣的不行不行的。看到了很多小伙伴的留言,表示和娜娜的情況是一樣的。

娜娜立志要帶領小伙伴們學好 java ,怎能被這些題目打到,所以今天娜娜和大家一起來做一道邏輯推理題,鍛煉一下思維如何?

請看題:

有人邀請 A,B,C,D,E,F 6個人參加一項會議,這6個人有些奇怪,因為他們有很多要求,已知:?

? 1)A,B兩人至少有1人參加會議;

? 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;

}

}

相信小伙伴們以后在遇到這類問題

就不會一點想法都沒有了

那么今天的分享就到這里了

小伙伴們再見了

拜拜

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • "use strict";function _classCallCheck(e,t){if(!(e instanc...
    久些閱讀 2,046評論 0 2
  • 今日得到 1.024|促銷活動:想用最少的錢臨門一腳,促使用戶決心購買,怎么辦? 營銷大師科特勒說過:“沒有降低2...
    Pheeb閱讀 384評論 0 0