日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

逻辑表达式——黑纸白纸

發布時間:2023/12/1 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 逻辑表达式——黑纸白纸 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、問題描述

有A、B、C、D、E五個人,每人額頭上都貼了一張黑色或白色的紙條。五人對坐,每人都可以看到其他人額頭上的紙的顏色,但都不知道自己額頭上的紙的顏色。五人互相觀察后,

A說:“我看見有三個人額頭上貼的是白紙,一個人額頭上貼的是黑紙。”

B說:“我看見其他四個人額頭上貼的都是黑紙。”

C說:“我看見有一個人額頭上貼的是白紙,其他三個人額頭上貼的是黑紙。”

D說:“我看見四個人額頭上貼的都是白紙。”

E說:“我不發表觀點。”

現在一直額頭上貼黑紙的人說的都是謊話,額頭上貼白紙的人說的都是實話,問這五個人誰的額頭上貼的是白紙,誰的額頭上貼的是黑紙。

二、算法思想

需要窮舉出每個人額頭上所貼紙的顏色,假設0表示黑色,1表示白色。然后按照題意列出A、B、C、D四個人所說的話對應的邏輯表達式,并判斷所列條件是否成立,成立則輸出所貼的紙張顏色即可。依據題意列出額的邏輯表達式為:

  A: ?(a && b+c+d+e==3) || (!a && b+c+d+e!=3)

  B: ?(b && a+c+d+e==0) || (!b && b+c+d+e!=0)

  C: ?(c && a+b+d+e==1) || (!c && a+b+d+e!=1)

  D: ?(d && a+b+c+e==4) || (!d && a+b+c+e!=4)

具體的操作利用循環解決問題,設置多重循環,依次窮舉出五人貼白紙和黑紙的所有可能,再用條件語句進行判斷,其條件表達式為(注意各個括號覆蓋范圍):

((a && b+c+d+e==3) || (!a && b+c+d+e!=3)) && ((b && a+c+d+e==0) || (!b && b+c+d+e!=0)) && ((c && a+b+d+e==1) || (!c && a+b+d+e!=1)) && ((d && a+b+c+e==4) || (!d && a+b+c+e!=4))

三、程序代碼

1 #include <stdio.h> 2 3 int main(){ 4 int a, b, c, d, e; 5 for(a=0; a<=1; a++){ 6 for(b=0; b<=1; b++){ 7 for(c=0; c<=1; c++){ 8 for(d=0; d<=1; d++){ 9 for(e=0; e<=1; e++){ 10 if( ((a && b+c+d+e==3) || (!a && b+c+d+e!=3)) && ((b && a+c+d+e==0) || (!b && b+c+d+e!=0)) && ((c && a+b+d+e==1) || (!c && a+b+d+e!=1)) && ((d && a+b+c+e==4) || (!d && a+b+c+e!=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

總結

以上是生活随笔為你收集整理的逻辑表达式——黑纸白纸的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。