首页

文章

编写C语言程序解决白帽子、红帽子问题

发布网友 发布时间:2022-03-01 17:32

我来回答

1个回答

热心网友 时间:2022-03-01 19:02

这个问题我用5位二进制数来表示,总的可能排列有32种,逐一检验就可以找到答案,具体看代码:

#include <stdio.h>
#include <conio.h>
#define N 5
int main(){
    unsigned int bin,max,i,w,hat[N]={0};
    for(max=1,i=0;i<N;++i)max*=2;//计算max=2^N
    for(bin=0;bin<max;++bin){//用N位二进制数表示每个人的帽子状态,bin=00000~11111
        for(w=1,i=0;i<N;++i,w*=2){//获取每个人戴的帽子(0为红帽子,1为白帽子)
            hat[i]=((bin&w)!=0); //按位与来检测其帽子颜色
        }
        for(w=0,i=0;i<N;++i)w+=hat[i];//统计总的白帽子数
        //检验甲的说法
        if(hat[0]){//如果甲戴白帽子,说真话
            if(w-1!=1)continue;//但是除了甲外,白帽子数不是1,说明解错误,换下一组解
        }else{//甲戴红帽子,说假话
            if(w==1)continue;
        }
        //检验乙的说法
        if(hat[1]){
            if(w-1!=N-1)continue;
        }else{
            if(w==N-1)continue;
        }
        //检验丙的说法
        if(hat[2]){
            if(!(w-1==1&&hat[0]==0))continue;
        }else{
            if(w==1&&hat[0]==0)continue;
        }
        //检验丁的说法
        if(hat[3]){
            if(!(w-1==0))continue;
        }else{
            if(w==0)continue;
        }
        //检验戊的说法
        if(hat[4]){
            if(!(w-1==1&&hat[0]==0))continue;
        }//如果戊说了假话,其余情况都有可能
        for(i=0;i<N;++i){
            printf("%d ",hat[i]);
        }
        printf("\n");
    }
    printf("\nFinished!\n");
    getch();
    return 0;
}

最后运行的结果显示为:0 0 1 0 1,即甲红、乙红、丙白、丁红、戊白。

手机导航地图语音怎么下载 如何分别真金和仿金首饰 怎样区分真金和仿金首饰呢 小学生新年晚会主持人的串词!!(不要太多)急 大大后天就需要了!!!_百度... 周年晚会策划公司 奥格瑞玛传送门大厅在哪 奥格瑞玛传送门大厅怎么走 锻炼颈椎的几个动作 水多久能结冰 冰能在多长时间内形成 请问水低于0度会结冰吗? 如何防止脱发严重 嘴唇上有黑印用蜜蜡和棉线去除了胡须 软柿子的热量 孕妇可以吃软柿子吗不是西红柿 脆柿子和软柿子的区别 脆柿子好还是软柿子好 软柿子可以多吃吗 “鱼悬洁白振清风”的出处是哪里 用大自然的声音评课好吗? 妇产科博士找超声科工作容易吗 怎能把微信6.2.0版本换回6.1.2版 微信群6.2.4怎么增加人数上限 微信6.2.2如何备份手机通讯录 电脑桌面图标不能放大? 有什么好用的识图软件 识图认人哪个软件最好 手机识图软件什么软件能识别图片位置 小米手机自动锁屏时间怎么修改 小米手机屏幕锁定时间设置教程 能举起100斤算大力吗 中医美容专业是什么 中医美容证有什么用 单声道音频什么意思(开启单声道音频有什么好处) 单声道音频是什么,有什么用处? 户口还未迁移到婆家 娘家户口怎么就没了呢 我结婚没有迁户口,现在娘家也没有怎么办 没领证生的孩子一般会判给谁 没领证生的孩子会判给谁 信用卡卡种有哪些 找一首古风歌曲 男声 低配电脑装w10还是w7流畅 电脑配置低装win7还是win10好 低配电脑适合装WIN7系统还是WIN10系统? ...500s-15isk这个联想笔记本的内存条尺寸是什么型号的有没有知道的... 越快越好.怎样减肥.而且胸部不缩水 请问徐闻县海安长途汽车客运站客服是多少? 过了平台期还会瘦吗 悦耳的意思悦耳的解释 重庆师范大学应用心理学专业的权威性如何? 打印机laserjetm1136mfp怎样设置无线打印 经典电影赏析之1:《精武英雄》 爆米花用的什么玉米 糯玉米哪个好 有机糯玉米的营养价值如何? 四大直辖市换帅原因 我虚拟机下安装的红帽子忘记密码了怎么办? 红帽子 LINUX装好后中文显示为乱码,怎么解决? linux红帽子9.0安装。只求解决方法。 苹果8plus的siri 红帽子 5.5 下做双网卡绑定! /proc/net/bonding/bond0 文件不存在? 是什么原因! 如何解决! iphone8语音助手怎么开通 怎样保管土豆才能避免发芽以及变绿呢? 刚开始学编程,用什么编程软件好 刚学习C语言用什么学习软件好~!~!~! 如何获得硬盘序列号 刚学c语言,常用的编程软件是哪个? win10不激活,会怎么样? win10第一个正式版不激活会怎么样? 我试过,除了提醒要激活,没有影响。 win10未激活影响网络吗 win10不激活有什么影响 win10不激活有什么坏处 win10的电脑系统不激活对电脑有影响吗? 现在去学习C语言还有没有什么用处 win10专业版未激活有什么影响 win10没有永久激活会怎么样 红帽子下更换yum源出现了这个依赖,镜像源都找遍了,没有这些,该怎么解决? 谁能告诉我隐形眼镜的戴法,简单点,有视频的最好 红帽子linux系统修改了IP地址后启动慢 隐形眼镜的戴法第一次带怎么带 隐形眼镜的戴法和摘法 RHEl(红帽子linux5.4)安装PHP时出错一直没办法解决,帮忙解决一下! 小眼睛戴隐形眼镜有什么技巧吗? 红帽子linux系统如何用命令打开回收站 cad图形界限的设置? 如何做清蒸鲈鱼 在家怎么做清蒸鲈鱼? 如何做清蒸鲈鱼? 自己在家怎么做清蒸鱼 怎么做清蒸鲈鱼? 怎么做清蒸鲈鱼? 在家里怎么做清蒸鲈鱼 清蒸鲈鱼要怎样做 安装好了红帽子redhat9.0无法网络连接该如何搞好 红帽子系统怎么查找文件 被摘掉“红帽子”的行业协会应该怎么活
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com