实现下面的功能:甲、乙、丙、丁四个嫌疑人,只有1人为偷盗者。在审讯中,四人诚实或说谎都有可能。
公安人员审问四名窃贼嫌疑犯。已知,这四人当中仅有一名是窃贼,还知道这四人中每人要么是诚实的,要么总是说谎。在回答公安人员的问题中:
// 甲说:“乙没有偷,是丁偷的。”
// 乙说:“我没有偷,是丙偷的。”
// 丙说:“甲没有偷,是乙偷的。”
// 丁说:“我没有偷”
// 请根据这四人的谈话判断谁是盗窃者
代码:
public class 寻找窃贼
{
/**
* @param args
*/
public static void main(String[] args) {
// 公安人员审问四名窃贼嫌疑犯。已知,这四人当中仅有一名是窃贼,还知道这四人中每人要么是诚实的,要么总是说谎。在回答公安人员的问题中:
// 甲说:“乙没有偷,是丁偷的。”
// 乙说:“我没有偷,是丙偷的。”
// 丙说:“甲没有偷,是乙偷的。”
// 丁说:“我没有偷”
// 请根据这四人的谈话判断谁是盗窃者
int a, b, c, d;
// 穷举
// 真为0,假为1
for (a = 0; a < 2; a++)
for (b = 0; b < 2; b++)
for (c = 0; c < 2; c++)
for (d = 0; d < 2; d++)
{
if (b + d == 1 && b + c == 1 && a + b == 1
&& a + b + c + d == 1)
{// 成立找到窃贼
if (a == 1)
System.out.println("小偷是甲\n");
if (b == 1)
System.out.println("小偷是乙\n");
if (c == 1)
System.out.println("小偷是丙\n");
if (d == 1)
System.out.println("小偷是丁\n");
}
}
}
}
输出:
小偷是乙