四大湖问题(枚举法)

甲:洞庭湖最大,洪泽湖最小,鄱阳湖第三。

乙:洪泽湖最大,洞庭湖最小,鄱阳湖第二,太湖第三。

丙:洪泽湖最小,洞庭湖第三。

丁:鄱阳湖最大,太湖最小,洪泽湖第二,洞庭湖第三。

已知对于每个湖的大小,已知每人仅说对了一个,如果让计算机通过这些信息去判断四个湖的大学排名,也需具备逻辑推理能力。

代码如下:

#include <iostream>
using namespace std;
int main()
{
    int DT,HZ,PY,TH;
    bool flag=false;
    for (DT=1; DT<=4&&!flag; ++DT)
    {
        for (HZ=1; HZ<=4&&!flag; ++HZ)
        {
            if (DT==HZ)
                continue;
            else
                for (PY=1; PY<=4&&!flag; ++PY)
                {
                    if (PY==DT||PY==HZ)
                        continue;
                    else
                    {
                        TH=10-DT-PY-HZ;
                        if (((DT==1)+(HZ==4)+(PY==3))==1&&((HZ==1)+(DT==4)+(PY==2)+(TH==3))==1
                                &&((HZ==4)+(DT==3))==1 &&((PY==1)+(TH==4)+(HZ==2)+(DT==3))==1)
                        {
                            cout<<"洞庭湖第"<<DT<<"名\n洪泽湖第"<<HZ<<"名\n鄱阳湖第"<<PY<<"名\n太湖第"<<TH<<"名\n";
                            flag=true;

                        }
                    }
                }
        }
    }
    return 0;
}

运行结果:

时间: 2024-11-05 22:48:10

四大湖问题(枚举法)的相关文章

八皇后问题(回溯法&amp;枚举法)

作者 : 卿笃军 本文讨论了八皇后问题的三种解决方案: 一.枚举法 二.回溯法(递归版) 三.回溯法(非递归版) 本来这些代码是以前编写好的,没有发表,由于最近又学习到了八皇后问题,自己整理了一下发表了出来! 首先.说明一下何为八皇后问题,我也不去谷歌了,直接简单的说明一下: 八皇后问题,就是在一个8*8的平面棋盘上,要求你摆放8个棋子,要求:这8个棋子不能有2个在同一行,也不能有2个在同一列,同时一条斜线上面也不能有2个~~~~ 比如:4*4的棋盘,你可以这样摆放(4皇后问题): 以上图为参照

枚举法的简单应用

箱子里有红,黄,蓝,白,黑五种颜色玻璃球若干,每次任意拿出三个球,问拿出三种不同颜色玻璃球的可能取法,请输出每种排列的情况. 注解:利用枚举法定义五种情况,“enum color {red,yellow,blue,white,black};”,定义四个整形变量“int i,j,k,m=0;”,依次从i到k分别进行从红到黑的情况循环,利用if来决断i,j,k互不相等的情况,针对每种情况通过调用函数来进行输出转换,得到结果. 编程: #include <iostream>using namespa

java常量枚举法

不要再在纠结什么底层,什么牛逼技术,学会思考,改变思维模式 一.枚举的地位 在你平时的编码当中你会发现很多设计模式里都少不了类型的身影,这样也就造就了枚举不可获缺的地位(类型) 二.常量 我们常常用常量 来定义一些错误码等 如果是常量你的代码可能是这样 1 public final static class SysMsg{ 2 public static final STATUS_SUCCESS_CODE="0"; 3 public static final STATUS_FAILUR

枚举法判断某天是否为2015年节假日或周末

枚举法判断某天是否为2015年节假日或周末 1.节假日枚举类 /** *功能说明:节假日枚举类 * *创建人:Gansuper * *创建时间:2015-2-6 上午10:32:17 * *修改人 修改时间 修改描述 * */ public enum HolidayEnum { HOLIDAY(new String[]{"2015-01-01","2015-01-02","2015-01-03", "2015-02-18",&

POJ C程序设计进阶 编程题#2:四大湖

编程题#2:四大湖 来源: POJ(Coursera声明:在POJ上完成的习题将不会计入Coursera的最后成绩.) 注意: 总时间限制: 1000ms 内存限制: 65536kB 描述 我国有4大淡水湖. A说:洞庭湖最大,洪泽湖最小,鄱阳湖第三. B说:洪泽湖最大,洞庭湖最小,鄱阳湖第二,太湖第三. C说:洪泽湖最小,洞庭湖第三. D说:鄱阳湖最大,太湖最小,洪泽湖第二,洞庭湖第三. 已知这4个湖的大小均不相等,4个人每人仅答对一个, 请编程按照鄱阳湖.洞庭湖.太湖.洪泽湖的顺序给出他们的

跟王老师学枚举(四):枚举类练习

跟王老师学枚举(四):枚举的练习 主讲教师:王少华   QQ群号:483773664 一.需求 请编写一个关于星期几的枚举WeekDay 要求: 枚举值:Mon,Tue,Wed,Thu,Fri,Sat,Sun 该枚举要有一个方法,调用该方法返回中文格式的星期(星期一...) 二.参考代码 package chapter11_04;   public enum WeekDay {     Mon{         @Override         public String getChinaWe

【算法学习笔记】28.枚举法 解题报告 SJTU_OJ 1255 1256 魔戒

1256. 你的魔戒?不,是你的魔戒.加强版 Description 在前往末日火山的途中,佛罗多与他的霍比特人同胞不幸被半兽人抓住了.半兽人要对每个霍比特人进行询问,以找出哪个霍比特人携带了至尊魔戒.每个霍比特人可能会说以下几种话: I have the ring. 我有魔戒. I have not the ring. 我没有魔戒. XXX has the ring. XXX有魔戒.(XXX表示某个霍比特人的名字) XXX has not the ring. XXX没有魔戒. Today is

枚举法的应用

枚举法的应用——炸弹人小游戏 1 #include <iostream> 2 3 #define H 20 //地图行上限 4 #define L 21 //地图列上限 5 6 /* run this program using the console pauser or add your own getch, system("pause") or input loop */ 7 8 void BackUp(char map[][L],int n,int m,char ba

暴力枚举法总结

集训快要结束了,按照要求需要写一篇关于枚举的总结,于是在网上也看了许多其他菊苣写的文章,深受启发,但是思来想去感觉又不太系统,于是希望能在吸收那些知识后做一些整理,帮助后面的新人. 枚举的基本方法: 枚举,枚举,顾名思义,就是将所有情况都举出,并判断其是否符合题目条件.所以枚举的基本方法便是分析题意后,找到一个合适的维度列举每一个元素,以完成题目.其中如何找到一个合适的维度来进行枚举便是其中的最大难点. 枚举的基本条件: 首先是时间条件.一般来说主流的OJ当中,1000ms的时间限制下可以运行操

【算法学习笔记】64. 枚举法 SJTU OJ 1381 畅畅的牙签

枚举法就好了,推理很麻烦,感觉也做不出来. 创造一个结构体,一个是真实的数,一个是花费的牙签数. 构建一位数,两位数,三位数即可. #include <iostream> #include <vector> using namespace std; //从0到9耗费的牙签数 int cost[10]={6,2,5,5,4,5,6,3,7,6}; struct num { int n;//用于计算的数 int c;//耗费的牙签 }; num v[100000]; int main(