各位小伙伴准备好了吗?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;
}
}
相信小伙伴们之后在遇到这类问题
就不会一点想法都没有了
那么今天的分享就到这里了
小伙伴们再见了
拜拜