如何编程解决逻辑推理题

这篇文章里将不断更新本人在编程语言的学习中遇到的逻辑推理题。

 


 

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

 

 

posted @ 2014-03-05 19:18  Moi!  阅读(1009)  评论(0编辑  收藏  举报