1. 程式人生 > 實用技巧 >從搭建大資料環境說起,到執行WordCount所遇到的坑

從搭建大資料環境說起,到執行WordCount所遇到的坑

技術標籤:筆記

窮舉法## 誠實族和說謊族是來自兩個荒島的不同民族,誠實族的人永遠說真話,而說謊族的人永遠說假話。迷語博士是個聰明的人,他要來判斷所遇到的人是來自哪個民族的。

迷語博士遇到三個人,知道他們可能是來自誠實族或說謊族的。為了調查這三個人是什麼族的,博士分別問了他們的問題,這是他們的對話:
問第一個人:“你們是什麼族?”,答:“我們之中有兩個來自誠實族。”第二個人說:“不要胡說,我們三個人中只有一個是誠實族的。”第三個人聽了第二個人的話後說:“對,就是隻有一個誠實族的。”
請根據他的回答判斷他們分別是哪個族的。
演算法分析
假設這三個人分別為A、B、C,若說謊其值為0,若誠實,其值為1。根據題目中三個人的話可分別列出:

第一個人: a&&a+b+c2||!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
利用窮舉法,可以很容易地推出結果。

演算法


#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;
}
}