從搭建大資料環境說起,到執行WordCount所遇到的坑
阿新 • • 發佈:2020-12-20
技術標籤:筆記
窮舉法## 誠實族和說謊族是來自兩個荒島的不同民族,誠實族的人永遠說真話,而說謊族的人永遠說假話。迷語博士是個聰明的人,他要來判斷所遇到的人是來自哪個民族的。
迷語博士遇到三個人,知道他們可能是來自誠實族或說謊族的。為了調查這三個人是什麼族的,博士分別問了他們的問題,這是他們的對話:
問第一個人:“你們是什麼族?”,答:“我們之中有兩個來自誠實族。”第二個人說:“不要胡說,我們三個人中只有一個是誠實族的。”第三個人聽了第二個人的話後說:“對,就是隻有一個誠實族的。”
請根據他的回答判斷他們分別是哪個族的。
演算法分析
假設這三個人分別為A、B、C,若說謊其值為0,若誠實,其值為1。根據題目中三個人的話可分別列出:
第二個人: b&&a+b+c1||!b&&a+b+c!=1
第三個人: c&&a+b+c==1||!c&&a+b+c!=1
利用窮舉法,可以很容易地推出結果。
演算法
#include<iostream> using namespace std; int main() { int a,b,c; for(a=0;a<2;a++) for(b=0;b<2;b++) for(c=0;c<2;c++) if(((a&&a+b+c==2)||(!a&&a+b+c!=2)) &&((b&&a+b+c==1)||(!b&&a+b+c!=1)) &&((c&&a+b+c==1)||(!c&&a+b+c!=1))) { if(a==1) cout << "第一個人是誠實族的" << endl; else cout << "第一個人是說謊族的" << endl; if(b==1) cout << "第二個人是誠實族的" << endl; else cout << "第二個人是說謊族的" << endl; if(c==1) cout << "第三個人是誠實族的" << endl; else cout << "第三個人是說謊族的" << endl; } }