/**已知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'); } } } } }