zoukankan      html  css  js  c++  java
  • 逻辑判断问题(java版)



    /**
    猜测产品质量评奖 

    【问题】5家工厂的产品在一次评比中分获1,2,3,4,5,在公布结果前,已知E
            厂产品肯定不是第二、三名,五厂代表猜测评比结果,
              A厂的代表说:E厂一定能获得第一名。
              B厂的代表说:我厂的产品可能获第二名。
              C厂的代表说:A厂的产品质量最次。
              D厂的代表说:C厂的产品不是最好的。
              E厂的代表说:D厂的产品会获得第一名。

            公布结果后,证明只有产品获第一名和第二名的两个厂的代表猜对了。
            求5个厂产品各获第几名。

    【答案】    A  B   C   D   E
              5  2   1   3   4  
      
             
     谁获冠军? 

    【问题】甲乙丙丁戊五个人在运动会上分获百米、二百米、跳高、跳远和铅球冠军,有
            四个人猜测比赛结果:
              A说:乙获铅球冠军,丁获跳高冠军。
              B说:甲获百米冠军,戊获跳远冠军。
              C说:丙获跳远冠军,丁获二百米冠军。
              D说:乙获跳高冠军,戊获铅球冠军。
            其中每个人都只说对一句,说错一句。求五人各获哪项冠军。
    【算法】用1,2,3,4,5分别代表百米、二百米、跳高、跳远和铅球5个项目,用a,b,c,d,e
            分别代表五人。如b=3 表示乙获跳高冠军。用多重循环穷举出来。
    【答案】  甲  乙  丙  丁  戊
            1  2  4  3  5
             
     
      谁是小偷? 
      
    【问题】有A、B、C、D四名偷窃嫌疑犯,其中一人是小偷,审问中,
    A说:“我不是小偷”,
    B说:“C是小偷”,
    C说:“小偷肯定是D”,
    D说:“C在冤枉人”,
    有三人说真话,一人说假话,问到底谁是小偷?

    【答案】 C

     
    */



    public class LogicProblem {
        
        
    int a,b,c,d,e;
        
        
    public LogicProblem()
        
    {
            WhoWillWin();
            WhoIsChampion();
            WhoIsThief();
        }

        
        
    public void WhoWillWin()
        
    {
            
    int truelogic;
            
    for(a=1;a<=5;a++)
                
    for(b=1;b<=5;b++)
                    
    for(c=1;c<=5;c++)
                        
    for(d=1;d<=5;d++)
                        
    {
                            truelogic
    =0;
                            e
    =15-a-b-c-d;
                            
    if((e!=2&&e!=3)&&(a*b*c*d*e==120))
                            
    {
                                    
    //所有可能的条件罗列出来,只有两个正确
                                    if(e==1)
                                        truelogic
    ++;
                                    
    if(b==2)
                                        truelogic
    ++;
                                    
    if(a==5)
                                        truelogic
    ++;
                                    
    if(c!=1)
                                        truelogic
    ++;
                                    
    if(d==1)
                                        truelogic
    ++;
                                    
    if(truelogic==2)
                                    
    {
                                       
    //进一步罗列成立条件,只有两个是正确的
                                       if((e==1)&&((a<=2)))
                                           truelogic
    ++;
                                       
    if(b==2)
                                           truelogic
    ++;
                                       
    if((a==5)&&((c<=2)))
                                           truelogic
    ++;
                                       
    if((c!=1)&&((d<=2)))
                                           truelogic
    ++;
                                       
    if((d==1)&&((e==2)))
                                           truelogic
    ++;
                                       
    if(truelogic==4)
                                          System.out.println(
    "WhoWillWin--a:"+a+" b:"+b+" c:"+c+" d:"+d+" e:"+e);
                                    }

                            }

                        }

        }


        
    public void WhoIsChampion()
        
    {
            
    for(a=1;a<=5;a++)
                
    for(b=1;b<=5;b++)
                    
    for(c=1;c<=5;c++)
                        
    for(d=1;d<=5;d++)
                        
    {
                                e
    =15-a-b-c-d;
                                
    if((a*b*c*d*e==120)&&((b==5)||(d==3))&&((a==1)||(e==4))&&((c==4)||(d==2))&&((b==3)||(e==5)))
                                  System.out.println(
    "WhoIsChampion--a:"+a+" b:"+b+" c:"+c+" d:"+d+" e:"+e);
                        }

        }


        
    public void WhoIsThief()
        
    {
            
    int truelogic;
            
    for(a=1;a<4;a++)
            
    {
                    truelogic
    =0;
                    
    if(a!=1)
                      truelogic
    ++;
                    
    if(a==3)
                      truelogic
    ++;
                    
    if(a==4)
                      truelogic
    ++;
                    
    if(a!=4)
                      truelogic
    ++;
                    
    if(truelogic==3)
                    
    {
                         System.out.println(
    "WhoIsThief--a:"+a);
                    }

            }

        }

        
        
    public static void main(String[] args)
        
    {
            
    new LogicProblem();
        }


    }

  • 相关阅读:
    《Programming WPF》翻译 第8章 1.动画基础
    一些被遗忘的设计模式
    《Programming WPF》翻译 第4章 数据绑定
    《Programming WPF》翻译 第3章 控件
    《Programming WPF》翻译 第5章 样式和控件模板
    《Programming WPF》翻译 第7章 绘图
    《Programming WPF》翻译 第9章 自定义控件
    《Programming WPF》翻译 第7章 绘图 (2)
    《Programming WPF》翻译 第8章 前言
    关于Debug和Release之本质区别
  • 原文地址:https://www.cnblogs.com/bluespot/p/875660.html
Copyright © 2011-2022 走看看