张三说李四说慌,李四说王五说慌,王五说张三和李四都在说谎,问究竟谁在说谎,谁没说谎?
//谁在说谎。三个疑犯在法官面前各执一词。甲说:乙在说谎,乙说:丙在说谎;丙说:甲和乙都在说谎。法官为了难,甲乙丙三人谁在说谎?谁说的是真话呢?
C语言实现
#include <stdio.h> int main() { int a,b,c; for(a=0;a<=1;a++) { for(b=0;b<=1;b++) { for(c=0;c<=1;c++) { if((a&&!b||!a&&b)&&(b&&!c||!b&&c)&&(c&&a+b==0||!c&&a+b!=0)) { printf("张三:"); printf(a?"truth\n":"lie\n"); printf("李四:"); printf(b?"truth\n":"lie\n"); printf("王五:"); printf(c?"truth\n":"lie\n"); } } } } }
java实现
public class Liar { public static void main(String[] args) { for (int i = 0; i <= 1; i++) { for (int j = 0; j <= 1; j++) { for (int k = 0; k <= 1; k++) { if(((i==1&&j==0)||(i==0&&j==1))&& ((j==1&&k==0)||(j==0&&k==1))&& ((k==1&&i+j==0)||(k==0&&i+j>=1))){ System.out.print("甲\t"); System.out.println(i==1?"真":"假"); System.out.print("乙\t"); System.out.println(j==1?"真":"假"); System.out.print("丙\t"); System.out.println(k==1?"真":"假"); } } } } } }