(百例编程)54.谜语博士的难题(2)
2012-06-02 22:10
357 查看
题目:两面族是荒岛上的一个新民族,他们的特点是说话真一句假一句且真假交替。如果第一句为真,则第二句是假的;如果第一句为假的,则第二句就是真的,但是第一句是真是假没有规律。
迷语博士遇到三个人,知道他们分别来自三个不同的民族:诚实族、说谎族和两面族。三人并肩站在博士前面。
博士问左边的人:“中间的人是什么族的?”,左边的人回答:“诚实族的”。
博士问中间的人:“你是什么族的?”,中间的人回答:“两面族的”。
博士问右边的人:“中间的人究竟是什么族的?”,右边的人回答:“说谎族的”。
请问:这三个人都是哪个民族的?
迷语博士遇到三个人,知道他们分别来自三个不同的民族:诚实族、说谎族和两面族。三人并肩站在博士前面。
博士问左边的人:“中间的人是什么族的?”,左边的人回答:“诚实族的”。
博士问中间的人:“你是什么族的?”,中间的人回答:“两面族的”。
博士问右边的人:“中间的人究竟是什么族的?”,右边的人回答:“说谎族的”。
请问:这三个人都是哪个民族的?
/*题目:两面族是荒岛上的一个新民族,他们的特点是说话真一句假一句且真假交替。 如果第一句为真,则第二句是假的;如果第一句为假的,则第二句就是真的,但是第 一句是真是假没有规律。迷语博士遇到三个人,知道他们分别来自三个不同的民族: 诚实族、说谎族和两面族。三人并肩站在博士前面。博士问左边的人:“中间的人是 什么族的?”,左边的人回答:“诚实族的”。博士问中间的人:“你是什么族的? ”,中间的人回答:“两面族的”。博士问右边的人:“中间的人究竟是什么族的? ”,右边的人回答:“说谎族的”。请问:这三个人都是哪个民族的? */ //by as1138 2011-04-15 #include <iostream> using namespace std; int main(void) { int a,b,c; for(a=2;a>=0;--a) for(b=2;b>=0;--b) for(c=2;c>=0;--c) if ((((a==1||a==2)&&b==1)||((a==0||a==2)&&b!=1))&&//左边说真话||左边说假话 ((b==2&&a==0&&b==0)||(b==0&&((a==1&&c==2)||(a==2&&c==1))))&&//中间说真话||中间说假话 (((c==1||c==2)&&b==0)||((c==0||c==2)&&b!=0))&&//右边说真话||右边说假话 a+b+c==3//每个族的都有一个人 ) { if(a==2) cout<<"左边的人是两面人!"<<endl; else if(a==1) cout<<"左边的人是诚实族!"<<endl; else cout<<"左边的人是说谎族!"<<endl; if(b==2) cout<<"中间的人是两面人!"<<endl; else if(b==1) cout<<"中间的人是诚实族!"<<endl; else cout<<"中间的人是说谎族!"<<endl; if(c==2) cout<<"右边的人是两面人!"<<endl; else if(c==1) cout<<"右边的人是诚实族!"<<endl; else cout<<"右边的人是说谎族!"<<endl; } return 1; }
相关文章推荐
- (百例编程)53.谜语博士的难题(1)
- 逻辑推理与判断(谜语博士的难题)
- 谜语博士的难题2
- 逻辑推理与判断(谜语博士的难题(1))
- 逻辑推理与判断(谜语博士的难题(2))
- 逻辑推理题-用C++实现(4)--谜语博士的难题1-思考题
- 逻辑推理题-用C++实现(3)--谜语博士的难题1
- 谜语博士的难题--两面族
- (百例编程)76.小明买书
- 基于visual c++之windows核心编程代码分析(54)实现Winlogon注入dll
- C/C++语言经典实用趣味程序设计编程百例精解--大部分是自己写的(1)
- C/C++语言经典、实用、趣味程序设计编程百例精解(7)
- (百例编程)11.打鱼还是晒网
- (百例编程)21、4位反序数
- (百例编程)37.爱因斯坦数学问题
- (百例编程)41.马克思手稿中的
- (百例编程)52.黑与白
- Visual C++ 时尚编程百例003(I/O)
- VB工程--百例54--鼠标跟随
- (百例编程)61.1~9组成三个3位的平方数