谁说了真话,谁打碎了花瓶

看到一个智力推理题如下:

如果下列只有一个人说了真话,那么是谁打碎了花瓶?

夏克:吉姆打碎花瓶。

汤姆:夏克会告诉你谁打碎了花瓶

埃普尔:汤姆,夏克和我不太可能打碎花瓶。

克里斯:我没打碎花瓶、

艾力克:夏克打碎了花瓶,所以汤姆和埃普尔不太可能打碎花瓶。

吉姆:我打碎了花瓶,汤姆是无辜的。


心血来潮,简单用程序推理了下,下面是代码:

public class dd {
public static void main(String[] args) {
int a, b, c, d, e, f;
// a夏克
// b汤姆
// c埃普尔
// d克里斯
// e艾力克
// f吉姆
for (a = 0; a <= 1; a++)
for (b = 0; b <= 1; b++)
for (c = 0; c <= 1; c++)
for (d = 0; d <= 1; d++)
for (e = 0; e <= 1; e++)
for (f = 0; f <= 1; f++) {
if(
( (f==1)&&!(f==1)&&!(b==0&&a==0&&c==0)&&!(d==0)&&!(a==1&&b==0&&c==0)&&!(f==1&&b==0))||
(!(f==1)&& (f==1)&&!(b==0&&a==0&&c==0)&&!(d==0)&&!(a==1&&b==0&&c==0)&&!(f==1&&b==0))||
(!(f==1)&&!(f==1)&& (b==0&&a==0&&c==0)&&!(d==0)&&!(a==1&&b==0&&c==0)&&!(f==1&&b==0))||
(!(f==1)&&!(f==1)&&!(b==0&&a==0&&c==0)&& (d==0)&&!(a==1&&b==0&&c==0)&&!(f==1&&b==0))||
(!(f==1)&&!(f==1)&&!(b==0&&a==0&&c==0)&&!(d==0)&& (a==1&&b==0&&c==0)&&!(f==1&&b==0))||
(!(f==1)&&!(f==1)&&!(b==0&&a==0&&c==0)&&!(d==0)&&!(a==1&&b==0&&c==0)&& (f==1&&b==0))
){
if(a+b+c+d+e+f==1){
System.out.print(a);
System.out.print(b);
System.out.print(c);
System.out.print(d);
System.out.print(e);
System.out.print(f);
System.out.println();
}
}

}

}
}


运行结果:

000100
001000
010000

故可能是克里斯,埃普尔或者汤姆 !
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值