學(xué)習(xí)Java的同學(xué)注意了S浒摇V尽!學(xué)習(xí)過程中遇到什么問題或者想獲取學(xué)習(xí)資源的話朴沿,歡迎加入Java學(xué)習(xí)交流群:253772578猜谚,我們一起學(xué)Java!
各位小伙伴準(zhǔn)備好了嗎?
那么開始我們今天的分享吧~
上一次娜娜被一道入門級(jí)的邏輯推理題虐的死去活來赌渣,回去之后真的是氣的不行不行的魏铅。看到了很多小伙伴的留言锡垄,表示和娜娜的情況是一樣的沦零。
娜娜立志要帶領(lǐng)小伙伴們學(xué)好 java ,怎能被這些題目打到货岭,所以今天娜娜和大家一起來做一道邏輯推理題路操,鍛煉一下思維如何?
請(qǐng)看題:
有人邀請(qǐng) A,B,C,D,E,F 6個(gè)人參加一項(xiàng)會(huì)議千贯,這6個(gè)人有些奇怪屯仗,因?yàn)樗麄冇泻芏嘁螅阎?
? 1)A,B兩人至少有1人參加會(huì)議搔谴;
? 2)A,E,F 3人中有2人參加會(huì)議魁袜;
? 3)B和C兩人一致決定,要么兩人都去,要么兩人都不去峰弹;
? 4)A,D兩人中只1人參加會(huì)議店量;
? 5)C,D兩人中也只要1人參加會(huì)議;
? 6)如果D不去鞠呈,那么E也決定不去融师。
那么最后究竟有哪幾個(gè)人參加了會(huì)議呢?
這道題是很基礎(chǔ)的邏輯推理題了蚁吝,是不是已經(jīng)準(zhǔn)備好拿起筆來推理了呢旱爆?但是小伙伴們呀~今天我們不是要用自己的大腦來推理,而是要用 Java 程序y呦~所以請(qǐng)把手上的小本本合起來窘茁,打開編譯器怀伦,打開記事本也行,我們開始~
看到這個(gè)題的第一想法就是山林,沒有別的簡便方法房待,直接用暴力搜索,先把所有的可能性都想到驼抹,然后把條件都寫出來吴攒,滿足所有條件的就是正確答案。
0 代表不去參加會(huì)議砂蔽,1 代表去參見會(huì)議,然后咱們按照已知條件來寫條件語句署惯。
在把這些條件放進(jìn)去進(jìn)行循環(huán)就可以了左驾。
得出結(jié)果:
程序的功能已經(jīng)實(shí)現(xiàn)了,但是代碼看著有些繁瑣极谊,我們簡化一下代碼:
上面是正向的思維诡右,滿足條件的的情況來設(shè)置條件代碼,下面我們用逆向的思維轻猖,反著來排除所有的不正確的情況帆吻,剩下的就是正確答案:
簡化之后我們就只需要考慮錯(cuò)誤的情況,你只要滿足錯(cuò)誤的條件我們就返回 false咙边,最后剩到最后的就是正確答案了猜煮!
最后結(jié)果:
完整代碼:
publicclassMeeting2{
publicstaticvoidmain(String[] args){
for(inta=0;a<2;a++){// 0代表不去,1代表去
for(intb=0;b<2;b++){
for(intc=0;c<2;c++){
for(intd=0;d<2;d++){
for(inte=0;e<2;e++){
for(intf=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);
}
}
}
}
}
}
}
}
privatestaticbooleantm(inta,intb,intc,intd,inte,intf){
if((a+b)==0){
returnfalse;
}
if((a+e+f)!=2){
returnfalse;
}
if((b+c)==1){
returnfalse;
}
if((a+d)!=1){
returnfalse;
}
if((c+d)!=1){
returnfalse;
}
if(d==0&&e==1){
returnfalse;
}
returntrue;
}
}
相信小伙伴們以后在遇到這類問題
就不會(huì)一點(diǎn)想法都沒有了
那么今天的分享就到這里了
小伙伴們?cè)僖娏?/p>
拜拜