第九周项目6-穷举法之谁是小偷
2014-10-25 00:14
197 查看
问题:
警察局抓住了A、B、C、D四名盗窃嫌疑犯,其中只有一人是小偷。在审问时,A说:“我不是小偷”;B说:“C是小偷”;C说:“小偷肯定是D”;D说:“C在冤枉好人”。现在已经知道这四人中有三人说的是真话,一人说的是假话。请问到底谁是小偷?
构建代码:
运行结果:
思路:设4个变量a,b,c,d,为0时表示不是小偷,为1时表示是小偷,用四重循环穷举a,b,c,d可能的取值的组合,对每一种组合判断其是否符合题目中给出的约束。最后结论:C是小偷。
@ Mayuko
警察局抓住了A、B、C、D四名盗窃嫌疑犯,其中只有一人是小偷。在审问时,A说:“我不是小偷”;B说:“C是小偷”;C说:“小偷肯定是D”;D说:“C在冤枉好人”。现在已经知道这四人中有三人说的是真话,一人说的是假话。请问到底谁是小偷?
构建代码:
/* *Copyright (c) 2014,烟台大学计算机学院 *All gight reserved. *文件名称:temp.cpp *作者:邵帅 *完成时间:2014年10月24日 *版本号:v1.0 * *问题描述:判断谁是小偷 *输入描述:无 *程序输出;c是小偷 */ #include<iostream> using namespace std; int main() { int a,b,c,d;// 0不是小偷,1 是小偷 for (a=1; a>=0; a--) { for (b=1; b>=0; b--) { for (c=1; c>=0; c--) { for (d=1; d>=0; d--) { if ((a==0)+(c==1)+(d==1)+(d==0)==3 && a+b+c+d==1) { if (a==0) cout<<"A不是小偷"<<endl; else cout<<"A是小偷"<<endl; if (b==0) cout<<"B不是小偷"<<endl; else cout<<"B是小偷"<<endl; if (c==0) cout<<"C不是小偷"<<endl; else cout<<"C是小偷"<<endl; if (d==0) cout<<"D不是小偷"<<endl; else cout<<"D是小偷"<<endl; } } } } } return 0; }
运行结果:
思路:设4个变量a,b,c,d,为0时表示不是小偷,为1时表示是小偷,用四重循环穷举a,b,c,d可能的取值的组合,对每一种组合判断其是否符合题目中给出的约束。最后结论:C是小偷。
@ Mayuko
相关文章推荐
- 第九周项目6-穷举法之谁是小偷
- 第九周上机项目六穷举法解决组合问题(1)
- 第九周 项目六 穷举法解决组合问题之百钱买百鸡问题
- 第九周项目六:穷举法解决组合问题
- 第九周项目6-穷举法 换硬币
- 第9周项目穷举法解决问题 (小偷问题)
- 第九周项目6-穷举法之百钱百鸡
- 第九周项目六——穷举法解决问题(百钱百鸡问题)
- 第九周项目 6 穷举法解决组合问题(百钱百鸡)
- 第9周项目6穷举法解决组合问题之警察抓小偷
- 第九周项目六 穷举法解决问题之换分币
- 第九周 项目六穷举法解决组合问题之换分币
- 第九周项目6-穷举法之年龄几何
- 第九周项目6-穷举法之年龄几何
- 第九周项目 6 穷举法解决组合问题(换分币)
- 第九周项目六穷举法解决组合问题(2)换分币
- 第九周项目六——穷举法解决组合问题
- 第九周项目6-穷举法之谁去参加
- 第九周项目六 谁是小偷
- 第九周项目六穷举法解决组合问题(3)年龄几何