曲径通幽论坛

 找回密码
 立即注册
搜索
查看: 4409|回复: 0
打印 上一主题 下一主题

推断出凶手

[复制链接]

4918

主题

5880

帖子

3万

积分

GROAD

曲径通幽,安觅芳踪。

Rank: 6Rank: 6

积分
34397
跳转到指定楼层
楼主
发表于 2009-6-8 14:33:46 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
某地发生一件谋杀案,经常通过排查确定凶手必为 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;
}
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|曲径通幽 ( 琼ICP备11001422号-1|公安备案:46900502000207 )

GMT+8, 2025-6-18 00:04 , Processed in 0.084647 second(s), 22 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表