小偷问题
来源:互联网 发布:windows phone账号忘了 编辑:程序博客网 时间:2024/04/30 01:57
警察局抓了a,b,c,d四名偷窃嫌疑犯,其中只有一人是小偷。审问中
a说:“我不是小偷。”
b说:“c是小偷。”
c说:“小偷肯定是d。”
d说:“c在冤枉人。”
现在已经知道四个人中三人说的是真话,一人说的是假话,问到底谁是小偷?
问题分析:将a,b,c,d将四个人进行编号,号码分别为1,2,3,4。则问题可用枚举尝试法来解决。
算法设计:用变量x存放小偷的编号,则x的取值范围从1取到4,就假设了他们中的某人是小偷的所有情况。四个人所说的话就可以分别写成:
a说的话:x<>1
b说的话:x=3
c说的话:x=4
d说的话:x<>4
注意:在x的枚举过程中,当这四个逻辑式的值相加等于3时,即表示“四个人中三人说的是真话,一人说的是假话”。
程序代码:
#include<stdio.h>
void main( )
{ int x;
for(x=1;x<=4;x++)
if((x!=1)+(x==3)+(x==4)+(x!=4)==3)
printf("%c is a thief.\n",(64+x));
}
运行结果:
c is a thief .
- 小偷问题
- 小偷问题
- 小偷问题
- 密室抓小偷问题
- 小偷
- 小偷
- Java线程同步问题之警察抓小偷
- 第9周项目穷举法解决问题 (小偷问题)
- leetcode 198:动态规划求小偷偷东西问题:
- 网络小偷
- 遭遇小偷
- WAP小偷
- 小偷程序
- 天气预报小偷
- 小偷类
- 小偷可耻
- 小偷退齐兵
- 谁是小偷
- 嘿牛程序员__成都传智博客__JavaScript中的复选框的全选、反选问题
- 黑客活动合法化?荷兰在野党提议DDoS攻击合法
- poj 3461
- 中科院系统内计算机相关方向研究实力点评
- 观后感--《冠军》
- 小偷问题
- 黑马程序员_.NET学习1(vs2010中用.net4.0的bug)
- Internals of Java Class Loading
- 黑马程序员之ado.net之一
- linux环境变量配置的4个方法
- MMC 卡驱动分析
- hoj Count on Canton
- C++ Programmer's Cookbook 语言介绍大全
- [树状数组]HOJ 10069 星星的等级