商城网站 免费开源,建设网站浩森宇特,电子商务网站特色,seo关键词推广怎么做一、问题描述 有A、B、C、D、E五个人#xff0c;每人额头上都贴了一张黑色或白色的纸条。五人对坐#xff0c;每人都可以看到其他人额头上的纸的颜色#xff0c;但都不知道自己额头上的纸的颜色。五人互相观察后#xff0c; A说#xff1a;“我看见有三个人额头上贴的是白…一、问题描述 有A、B、C、D、E五个人每人额头上都贴了一张黑色或白色的纸条。五人对坐每人都可以看到其他人额头上的纸的颜色但都不知道自己额头上的纸的颜色。五人互相观察后 A说“我看见有三个人额头上贴的是白纸一个人额头上贴的是黑纸。” B说“我看见其他四个人额头上贴的都是黑纸。” C说“我看见有一个人额头上贴的是白纸其他三个人额头上贴的是黑纸。” D说“我看见四个人额头上贴的都是白纸。” E说“我不发表观点。” 现在一直额头上贴黑纸的人说的都是谎话额头上贴白纸的人说的都是实话问这五个人谁的额头上贴的是白纸谁的额头上贴的是黑纸。 二、算法思想 需要穷举出每个人额头上所贴纸的颜色假设0表示黑色1表示白色。然后按照题意列出A、B、C、D四个人所说的话对应的逻辑表达式并判断所列条件是否成立成立则输出所贴的纸张颜色即可。依据题意列出额的逻辑表达式为 A (a bcde3) || (!a bcde!3) B (b acde0) || (!b bcde!0) C (c abde1) || (!c abde!1) D (d abce4) || (!d abce!4) 具体的操作利用循环解决问题设置多重循环依次穷举出五人贴白纸和黑纸的所有可能再用条件语句进行判断其条件表达式为注意各个括号覆盖范围 ((a bcde3) || (!a bcde!3)) ((b acde0) || (!b bcde!0)) ((c abde1) || (!c abde!1)) ((d abce4) || (!d abce!4)) 三、程序代码 1 #include stdio.h2 3 int main(){4 int a, b, c, d, e;5 for(a0; a1; a){6 for(b0; b1; b){7 for(c0; c1; c){8 for(d0; d1; d){9 for(e0; e1; e){
10 if( ((a bcde3) || (!a bcde!3)) ((b acde0) || (!b bcde!0)) ((c abde1) || (!c abde!1)) ((d abce4) || (!d abce!4)) ){
11 printf(0-黑纸\t1-白纸\n\n);
12 printf( a是%d\n b是%d\n c是%d\n d是%d\n e是%d\n, a, b, c, d, e);
13 }
14 }
15 }
16 }
17 }
18 }
19 return 0;
20 } 四、运行结果 转载于:https://www.cnblogs.com/IronLavender/p/6814301.html