公安人員抓捕了四個盜竊嫌疑犯,下面是他們的審訊記錄:
A:是B偷的,不是D偷的
B:我沒有偷,是C偷的
C說:A沒有偷,是B偷的
D:我沒有偷
現已經確切知道只有一人參與偷竊,且四人的話語要么全是真話,要么全在撒謊。
請根據這些條件編程判斷誰是小偷?
package com.heyang;

public class WhoIsTheThief{
public static void main(String[] args){
int[] arr=new int[4];
for(arr[0]=0;arr[0]<=1;arr[0]++){
for(arr[1]=0;arr[1]<=1;arr[1]++){
for(arr[2]=0;arr[2]<=1;arr[2]++){
for(arr[3]=0;arr[3]<=1;arr[3]++){
// 只有一個人是小偷
if(hasOnlyOneThief(arr)==false){
continue;
}
boolean wordByA=(arr[1]==1 && arr[3]==0);
boolean wordByB=(arr[1]==0 && arr[2]==1);
boolean wordByC=(arr[0]==0 && arr[1]==1);
boolean wordByD=(arr[3]==0);
boolean resultFinal=allTrueOrAllFalse(wordByA,wordByB,wordByC,wordByD);
if(resultFinal==false){
printThief(arr);
return;
}
}
}
}
}
}
private static boolean hasOnlyOneThief(int[] arr){
int thiefCount=0;
for(int i:arr){
thiefCount+=i;
}
return thiefCount==1;
}
private static boolean allTrueOrAllFalse(boolean wordByA,boolean wordByB,boolean wordByC,boolean wordByD){
if(wordByA==true && wordByB==true && wordByC==true && wordByD==true){
return true;
}
else if(wordByA==false && wordByB==false && wordByC==false && wordByD==false){
return true;
}
else{
return false;
}
}
private static void printThief(int[] arr){
char[] arrNames={'A','B','C','D'};
for(int i=0;i<arr.length;i++){
if(arr[i]==i){
System.out.println(arrNames[i]+"是竊賊");
}
else{
System.out.println(arrNames[i]+"不是竊賊");
}
}
}
}
A:是B偷的,不是D偷的
B:我沒有偷,是C偷的
C說:A沒有偷,是B偷的
D:我沒有偷
現已經確切知道只有一人參與偷竊,且四人的話語要么全是真話,要么全在撒謊。
請根據這些條件編程判斷誰是小偷?


































































