蓝桥杯07 java 断案 您所在的位置:网站首页 甲乙丙丁我姓丁是谁在线阅读 蓝桥杯07 java 断案

蓝桥杯07 java 断案

2024-06-03 16:39| 来源: 网络整理| 查看: 265

题目描述

公安人员审问甲、乙、丙、丁四个嫌疑犯,已确知,这四个人当中仅有一人是偷窃者,还知道这四个人的答话,要么完全诚实,要么完全说谎。在回答公安人员的问话中:  甲说:“乙没有偷,是丁偷的。”  乙说:“我没有偷,是丙偷的。”  丙说:“甲没有偷,是乙偷的。”  丁说:“我没有偷,我用的那东西是我家里的。”  请根据上述四人答话,判断谁是偷窃者。 

要求

输出偷窃者是谁,A表示甲,B表示乙,C表示丙,D表示丁。 

算法描述

甲乙丙丁四人,必有一人是小偷,我们分别猜测某人是小偷,然后我们判断是都说谎了,还是都没说谎;

假设A是小偷,此时甲乙丙都说谎了,丁没说谎,不符合要求,继续执行循环,假设B是小偷,B为小偷那么其他人都不是小偷,此时甲乙丙丁都没说谎,符合要求。

public class thief { public static void main(String[] args) { boolean[] a = new boolean[4];//将甲乙丙丁均存入a数组,并初始为false,都不是小偷 boolean[] b = new boolean[4];//将甲乙丙丁说的话存入b数组 for (int i = 0; i < 4; i++) { a[i] = true; //假设是小偷(只有一个小偷) if (i > 0) { a[i - 1] = false; } b[0] = !a[1] && a[3]; b[1] = !a[1] && a[2]; b[2] = !a[0] && a[1]; b[3] = !a[3]; //他们的回答要么完全对,要么完全不对 if(!b[0]) { if (!(a[1] && !a[3])) { continue; } } if(!b[1]) { if (!(a[1] && !a[2])) { continue; } } if(!b[2]) { if (!(a[0] && !a[1])) { continue; } } if(!b[3]) { if(!a[3]){ continue; } } System.out.println((char)(i+65)+"是小偷"); } } }

结果显示



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有