曲径通幽论坛

标题: 推断出凶手 [打印本页]

作者: beyes    时间: 2009-6-8 14:33
标题: 推断出凶手
某地发生一件谋杀案,经常通过排查确定凶手必为 A,B,C,D中的一个,以下是 4个嫌疑犯的供词:
A 说:不是我
B 说: 是 C
C 说:是 D
D 说: C 在胡说
已知 3 个人说了真话,1 个人说的是假话。现在请根据这些信息,写一个程序来确定到底谁是凶手。

分析:可用穷举法解决。依次假设每个人都可能是凶手,那么当我们假设的情况正确时,必定会推出他们4人所说的话中有一个假,三个真的情况。也就是说,如果用 0 表示假,1 表示真,那么就会有 1 个0,3 个 1 的情况。否则,就不会产生三个 1 的一起同在的情况。

实现代码
#include <stdio.h>

int main()
{
    int i, sum=0, flag=0;
    char killer;

    for(i=0; i<4; i++)
    {
        killer = 64 + i;
       
        sum = (killer != 'A') + (killer == 'C') + (killer == 'D') + (killer != 'D');

        if(sum == 3) {
            flag = 1;
            printf("%c is the killer\n", killer);
            break;
        }
    }
    if(flag == 0)
        printf("Can not find\n");
   
    return 0;
}





欢迎光临 曲径通幽论坛 (http://www.groad.net/bbs/) Powered by Discuz! X3.2