• JAVA趣味逻辑算法


    /**已知4位同学中的一位数学考了100分,当小李询问这4位是谁考了100分时,4个人的回答如下: A说:不是我。 B说:是C C说:是D。 D说:他胡说。 

    已知三个人说的是真话,一个人说的是假话。现在要根据这些信息,找出考100分的人。
    * */

    思路:四个人先假设第一个人考了100分,然后此时判断是否存在三人说真话,如果存在就就是该人,依次对四个人进行判断。

    public class Main {
        public static void main(String[] args) {
            char thisman;
            char k;
            int n=0;
            for (k = 'A';k<='D'; k++) {
                thisman=k;
                n=(((thisman!='A')?1:0)+((thisman=='C')?1:0)+((thisman=='D')?1:0)+((thisman!='D')?1:0));
                System.out.println(n);
                if(n==3){
                    System.out.println("100分为:"+thisman);
                    break;
                }
            }
            if(k>'D')
                System.out.println("无解");
            
        }
    }

    /*甲说:―乙没有偷,是丁偷的。‖ 乙说:―我没有偷,是丙偷的。‖ 丙说:―甲没有偷,是乙偷的。‖ 丁说:―我没有偷‖
    * 请根据这四人的谈话判断谁是盗窃者?

    思路:共有四人发表观点,假设第i个人为盗贼,将其设置为1,其余三人设置为0,然后判断四个条件是否成立,从而确定第几个人是盗贼。

    这里假设A、B、C、D代表四个人,变量值为1代表该人是盗贼。

    public class pra1 {
        public static void main(String[] args) {
            int arr[] = new int[4];
            for (int i = 0; i < 4; i++) {//假设第i个人为盗贼
                for (int j = 0; j < 4; j++) {//将盗贼设置为1,其余设置为0
                    if (j==i)
                        arr[j]=1;
                    else 
                        arr[j]=0;
                }
                if (arr[3]+arr[1]==1&&arr[1]+arr[2]==1&& arr[0]+arr[1]==1) {//判断条件是否成立
                    for (int m = 0; m < arr.length; m++) {
                        if (arr[m]==1) 
                            System.out.printf("%c",m+'A');
                    }
                }
            }
        }
    }
  • 相关阅读:
    MyBatis查询没有数据返回值为list还是null--------采坑
    Java弱引用WeakReference详细讲解
    idea debug调试详细教程
    [Docker]Dockerfile指令
    [Docker]Dockerfile定制容器
    [Docker]tomcat 404
    [Docker]容器操作
    [Docker]镜像操作
    [Docker]docker-ce安装
    [CentOS7]安装界面直接修改eth0
  • 原文地址:https://www.cnblogs.com/littlewriter/p/6679425.html
Copyright © 2020-2023  润新知