美文网首页
利用 Java 程序来推理『到底谁会来参加会议?』

利用 Java 程序来推理『到底谁会来参加会议?』

作者: 天诺IT技术 | 来源:发表于2018-03-21 13:56 被阅读0次

    学习Java的同学注意了!!!学习过程中遇到什么问题或者想获取学习资源的话,欢迎加入Java学习交流群:253772578,我们一起学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,最后剩到最后的就是正确答案了!

    最后结果:

    完整代码:

    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;

    }

    }

    相信小伙伴们以后在遇到这类问题

    就不会一点想法都没有了

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

    小伙伴们再见了

    拜拜

    相关文章

      网友评论

          本文标题:利用 Java 程序来推理『到底谁会来参加会议?』

          本文链接:https://www.haomeiwen.com/subject/fpkgqftx.html