如何编程解决逻辑推理题
这篇文章里将不断更新本人在编程语言的学习中遇到的逻辑推理题。
2014/3/5
1.甲乙丙3位球迷分别猜测半决赛中ABCD四人的名次,如下:
甲:A1B2
乙:C1D3
丙:D2A3
#include<iostream> using namespace std; int main() { int a,b,c,d; for(a=1;a<5;a++) for(b=1;b<5;b++) for(c=1;c<5;c++) for(d=1;d<5;d++) if( (a==1) + (b==2)==1 && (c==1) + (d==3)==1 && (d==2) + (a==3)==1 && (a==b)+(a==c)+(a==d)+(b==c)+(b==d)+(c==d)==0 ) { cout<<"a="<<a<<" b="<<b<<" c="<<c<<" d="<<d<<endl; return 0; } return 1; }
结果:a=3 b=2 c=1 d=4
2.日本某地发生了一件谋杀案,警察通过排查确定杀人凶手必为4个嫌疑犯的一个。以下为4个嫌疑犯的供词。
A说:不是我。
B说:是C。
C说:是D。
D说:C在胡说
已知3个人说了真话,1个人说的是假话。现在请根据这些信息,写一个程序来确定到底谁是凶手。
#include<stdio.h> int main() { for(int killer='A';killer<='D';killer++) if( (killer!='A')+(killer=='C')+(killer=='D')+(killer!='D')==3 ) { printf("The killer is %c",killer); return 0; } return 1; }
结果:The killer is C