看到一个智力推理题如下:
如果下列只有一个人说了真话,那么是谁打碎了花瓶?
夏克:吉姆打碎花瓶。
汤姆:夏克会告诉你谁打碎了花瓶
埃普尔:汤姆,夏克和我不太可能打碎花瓶。
克里斯:我没打碎花瓶、
艾力克:夏克打碎了花瓶,所以汤姆和埃普尔不太可能打碎花瓶。
吉姆:我打碎了花瓶,汤姆是无辜的。
心血来潮,简单用程序推理了下,下面是代码:
运行结果:
000100
001000
010000
故可能是克里斯,埃普尔或者汤姆 !
如果下列只有一个人说了真话,那么是谁打碎了花瓶?
夏克:吉姆打碎花瓶。
汤姆:夏克会告诉你谁打碎了花瓶
埃普尔:汤姆,夏克和我不太可能打碎花瓶。
克里斯:我没打碎花瓶、
艾力克:夏克打碎了花瓶,所以汤姆和埃普尔不太可能打碎花瓶。
吉姆:我打碎了花瓶,汤姆是无辜的。
心血来潮,简单用程序推理了下,下面是代码:
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
故可能是克里斯,埃普尔或者汤姆 !
4675

被折叠的 条评论
为什么被折叠?



