/*问题描述:在一个旅馆中住着六个不同国籍的人,他们分别来自美国、德国、英国、法国、俄罗斯和意大利。他们的名字叫A、B、C、D、E和F。名字的顺序与上面的国籍不一定是相互对应的。现在已知:
1)A美国人是医生。
2)E和俄罗斯人是技师。
3)C和德国人是技师。
4)B和F曾经当过兵,而德国人从未参过军。
5)法国人比A年龄大;意大利人比C年龄大。
6)B同美国人下周要去西安旅行,而C同法国人下周要去杭州度假。
试问由上述已知条件,A、B、C、D、E和F各是哪国人?

*/

  1. #include<iostream>
  2. using namespace std;
  3. int Nation[6];//A--F的国籍,0--5分别代表美国---意大利
  4. int count=0;//记录有多少种情况
  5. int main(){
  6. void Passenger(int num);
  7. Passenger(0);
  8. cout<<count<<endl;
  9. return 0;
  10. }
  11. void Passenger(int num){
  12. if(num==6){
  13. bool temp;
  14. for(int j=0;j<=5;j++){
  15. temp=false;
  16. for(int k=j+1;k<=5;k++){
  17. if(Nation[j]==Nation[k]){
  18. temp++;
  19. break;
  20. }
  21. }
  22. if(temp)break;
  23. }
  24. if(temp)return;/*先确保不同国籍*/
  25. else{
  26. if(Nation[0]!=0 && Nation[4]!=4 && Nation[2]!=1 /*代表已知条件1,2,3*/
  27. && Nation[1]!=1 && Nation[5]!=1/*条件4*/
  28. && Nation[0]!=3 && Nation[2]!=5 /*条件5*/
  29. && Nation[1]!=0 && Nation[2]!=3 /*条件6*/
  30. && Nation[2]!=0 ){
  31. count++;
  32. cout<<"A,B,C,D,E,F可能国籍分别为:"<<endl;
  33. for(int k=0;k<=5;k++){
  34. cout<<char('A'+k)<<"是";
  35. switch(Nation[k]){
  36. case 0:cout<<"美国人"<<endl;break;
  37. case 1:cout<<"德国人"<<endl;break;
  38. case 2:cout<<"英国人"<<endl;break;
  39. case 3:cout<<"法国人"<<endl;break;
  40. case 4:cout<<"俄罗斯人"<<endl;break;
  41. case 5:cout<<"意大利人"<<endl;break;
  42. default:break;
  43. }
  44. }
  45. }
  46. }
  47. return;
  48. }
  49. else{
  50. for(int i=0;i<=5;i++){
  51. Nation[num]=i;
  52. num++;
  53. Passenger(num);
  54. num--;
  55. }
  56. }
  57. }

区分旅客国籍.....相关推荐

  1. C语言实例 区分旅客国籍

    他们的名字叫A.B.C.D.E和F. 如今已知: 1)A美国人是医生. 2)E和俄罗斯人是技师. 3)C和德国人是技师. 5)法国人比A年龄大;意大利人比C年龄大. 试问由上述已知条件, A.B.C. ...

  2. 100个经典C语言程序(益智类)

    100个经典C语言程序(益智类) [1.绘制余弦曲线] 在屏幕上用"*"显示0~360度的余弦函数cos(x)曲线 [问题分析与算法设计] 利用cos(x)的左右对称性,将屏幕的行 ...

  3. c/c++ 趣味程序百例

    C/c++趣味程序百例(献给C/C++初学者) C/c++趣味程序百例(献给C/C++初学者) 1.绘制余弦曲线 2.绘制余弦曲线和直线 3.绘制圆 4.歌星大奖赛 5.求最大数 6.高次方数的尾数 ...

  4. C/C++趣味编程经典100例详解

    更新记录   2019-08-27 28题 重写     C/C++语言经典.实用.趣味程序设计编程百例精解 1.绘制余弦曲线 在屏幕上用"*"显示0~360度的余弦函数cos(x ...

  5. C语言趣味程序设计编程百例精解

    C/C++语言经典.实用.趣味程序设计编程百例精解(1)  1.绘制余弦曲线 在屏幕上用"*"显示0~360度的余弦函数cos(x)曲线 *问题分析与算法设计 如果在程序中使用数组 ...

  6. C/C++趣味程序百例

    1.绘制余弦曲线  2.绘制余弦曲线和直线  3.绘制圆  4.歌星大奖赛  5.求最大数  6.高次方数的尾数  7.阶乘尾数零的个数    8.借书方案知多少  9.杨辉三角形   10.数制转换 ...

  7. 《高级语言程序设计》习题集

    <高级语言程序设计>习题集 (本资料仅供学生学习使用) 求最大数 借书方案知多少 杨辉三角形 数制转换 打鱼还是晒网 该存多少钱 怎样存钱利最大 出售金鱼 平分七筐鱼 有限5位数 8 除不 ...

  8. c/c++一百道小程序

    1.绘制余弦曲线  2.绘制余弦曲线和直线  3.绘制圆  4.歌星大奖赛  5.求最大数  6.高次方数的尾数  7.阶乘尾数零的个数    8.借书方案知多少  9.杨辉三角形   10.数制转换 ...

  9. 200个经典C语言程序

    1.绘制余弦曲线     在屏幕上用"*"显示0~360度的余弦函数cos(x)曲线 *问题分析与算法设计     如果在程序中使用数组,这个问题十分简单.但若规定不能使用数组,问 ...

最新文章

  1. 好奇怪呀后面加什么标点_加标点
  2. openCV滑动条TrackBar事件实例
  3. Promise-Polyfill源码解析(2)
  4. 8位二进制补码表示整数的最小值是什么,最大值是什么
  5. DXUT框架剖析(3)
  6. 零基础学python书籍-图书推荐:《零基础学Python(全彩版)》
  7. 博文视点大咖直播伴你读No.4:用户增长、产品思维和产品的变化
  8. cad如何生成kml文件_如何制作KML文件?
  9. 使用 ffmpeg 进行视频(ts)合并
  10. SIFT算法应用:全景图像拼接
  11. mysql minus 语句用法,mysql如何用minus运算符?
  12. Bundle adjustment
  13. 基于RK3399PRO的蜂鸣器驱动移植文档
  14. 宝兰德BES安装及Springboot项目打包部署及websocket解决方案
  15. 理解计算 从根号2到AlphaGo 第3季神经网络的数学模型
  16. 微信小程序注册相关资料
  17. 灰色关联分析的简单介绍以及使用
  18. 下一代微服务!Service Mesh 2018年度总结
  19. linux博通2070蓝牙驱动,Broadcom博通BCM 2070/20702系列蓝牙设备驱动怎么样
  20. 半径为2.11的圆球的体积python_python习题

热门文章

  1. Android画面显示流程分析(1)
  2. matlab之Signal Labeled APP
  3. 视频录像软件使用方法!
  4. 在 Google Chrome 中,如何修复 Shockwave Flash 崩溃
  5. step by step学习LAMP配置
  6. pb setprofilestring()函数中使用相对路径
  7. Android Jcenter 依赖完整版
  8. python爬取去哪儿网_python网络爬虫(12)去哪网酒店信息爬取
  9. 手机计算机隐藏功能怎么用,手机隐藏功能大全
  10. (转) 坚持完成这套学习手册,你就可以去 Google 面试了