誰養魚c語言的簡單介紹

本文目錄一覽:

愛因斯坦的2%人做得出那題目有幾種答案!?

2%?開玩笑。。。

詳盡的推導如下

首先,利用房子突破

根據9,挪威人住第一間,

14挪威人旁邊是藍色房子,得到,藍色房子是第二間

再根據4綠色在白色房子左邊,綠色和白色都不可能是第一間。

根據1,英國人是紅色,則紅色也不是第一間。那麼只剩下黃色是第一間。

再根據4綠色在白色左邊,那麼中間的房間只可能是綠色和紅色中的一個,

但是5綠色喝咖啡,8中間喝牛奶,證明中間不是綠色,那就必然是紅色咯,

好,至此,房子順序確定,為黃,藍,紅,綠白

而且我們知道,第一間是挪威人,抽Dunhill(7),第二間的人養馬(11),第三間是英國人,喝牛奶,第四間的人喝咖啡(5)。

至此還能對我們有幫助的條件就只剩下

2 3 6 10 12 13 15

好,根據3丹麥人喝茶,丹麥人必然只能是2號或者5號(因為1是挪威人,3,4喝的都不是茶)

根據12抽Blue Master的人喝啤酒,他必然只能是2號或者5號(1號抽Dunhill,34喝的不是啤酒)

那麼,2號和5號必然一個喝啤酒一個和茶,剩下的喝水,就只能是1號了。

根據15,可知2號抽Blends煙,那麼喝啤酒抽BM煙(條件12描述)的人只能是5號了

那麼丹麥人喝茶,抽Blends,養馬,住第二間藍色,確定。

好,至此,飲料的問題解決了

再根據13,德國人抽Prince,只能是4號,因為125號的煙已經知道了,而三號是英國人。所以最後剩下的5號就是瑞典人,國籍解決,剩下的3號抽Pall Mall,煙草解決

由6,pall Mall養鳥,則3號浮出水面,中間房子,紅色,英國人,養鳥,喝奶,抽Pall Mall

再根據2, 5號人物確定,最後一間房,白色,瑞典人,啤酒,養狗,抽Blue Master。

再根據10,明顯2號隔壁養貓,而三號不養貓,則1號養貓,1號,黃色,挪威人,喝水,養貓,抽Dunhill。最後剩下的就是4號,德國人,綠色房子,喝咖啡,抽Prince,養魚。

以上推導,步步嚴密,不存在第二種可能,所以答案唯一,就是德國人,不存在第二種可能。

本題只有一個答案,lz的丹麥肯定錯了

使用計算機窮舉法解決這個題目。剛剛經過6610秒的程序運行,完成了窮舉。事實是,根據窮舉法的結果,在所有120*120*120*120*120種可能(每一項都是5種的全排列)裡面,只有一種可能滿足題目要求。根本找不到第二種答案。強烈要求樓主將自己的丹麥的答案細節發出!

源程序:(C語言)

#include stdio.h

void printls(int s[5][5])

{

FILE *pout;

int i,j;

pout=fopen(“res.txt”,”w+”);

for(i=0;i5;i++)

{

for(j=0;j5;j++)

{

printf(“%d “,s[i][j]);

fprintf(pout,”%d “,s[i][j]);

}

printf(“\n”);

fprintf(pout,”\n”);

}

fclose(pout);

}

int check(int s[5][5])

{

int i,j;

//1

for(i=0;i5;i++){if(s[i][0]==0)break;}

if(s[i][1]!=0)return 0;

//2

for(i=0;i5;i++){if(s[i][1]==4)break;}

if(s[i][4]!=2)return 0;

//3

for(i=0;i5;i++){if(s[i][1]==3)break;}

if(s[i][2]!=2)return 0;

//4

for(i=0;i5;i++){if(s[i][0]==3)break;}

if(i==4)return 0;

if(s[i+1][0]!=2)return 0;

//5

if(s[i][2]!=4)return 0;

//6

for(i=0;i5;i++){if(s[i][3]==2)break;}

if(s[i][4]!=1)return 0;

//7

for(i=0;i5;i++){if(s[i][0]==1)break;}

if(s[i][3]!=3)return 0;

//8

if(s[2][2]!=1)return 0;

//9

if(s[0][1]!=1)return 0;

//10

for(i=0;i5;i++){if(s[i][3]==0)break;}

if(i==0){if(s[1][4]!=3)return 0;}

else if(i==4){if(s[3][4]!=3)return 0;}

else {if((s[i+1][4]!=3)(s[i-1][4]!=3))return 0;}

//11

for(i=0;i5;i++){if(s[i][4]==0)break;}

if(i==0){if(s[1][3]!=3)return 0;}

else if(i==4){if(s[3][3]!=3)return 0;}

else {if((s[i+1][3]!=3)(s[i-1][3]!=3))return 0;}

//12

for(i=0;i5;i++){if(s[i][3]==1)break;}

if(s[i][2]!=0)return 0;

//13

for(i=0;i5;i++){if(s[i][1]==2)break;}

if(s[i][3]!=4)return 0;

//14

for(i=0;i5;i++){if(s[i][1]==1)break;}

if(i==0){if(s[1][0]!=4)return 0;}

else if(i==4){if(s[3][0]!=4)return 0;}

else {if((s[i+1][0]!=4)(s[i-1][0]!=4))return 0;}

//15

for(i=0;i5;i++){if(s[i][3]==0)break;}

if(i==0){if(s[1][2]!=3)return 0;}

else if(i==4){if(s[3][2]!=3)return 0;}

else {if((s[i+1][2]!=3)(s[i-1][2]!=3))return 0;}

//if right

printls(s);

printf(“\n”);

return 1;

}

int main()

{

int s[5][5],i,j,k,l,m,n,p[121][5],o;

o = 0;

i = 0;

for(p[i][0]=0;p[i][0]5;p[i][0]++)

{

for(p[i][1]=0;p[i][1]5;p[i][1]++)

{

for(p[i][2]=0;p[i][2]5;p[i][2]++)

{

for(p[i][3]=0;p[i][3]5;p[i][3]++)

{

for(p[i][4]=0;p[i][4]5;p[i][4]++)

{

if(p[i][0]==p[i][1])continue;

if(p[i][0]==p[i][2])continue;

if(p[i][0]==p[i][3])continue;

if(p[i][0]==p[i][4])continue;

if(p[i][1]==p[i][2])continue;

if(p[i][1]==p[i][3])continue;

if(p[i][1]==p[i][4])continue;

if(p[i][2]==p[i][3])continue;

if(p[i][2]==p[i][4])continue;

if(p[i][3]==p[i][4])continue;

printf(“%d %d %d %d %d\n”,p[i][0],p[i][1],p[i][2],p[i][3],p[i][4]);

i++;

printf(“%d\n”,i);

if(i==120)break;

for(j=0;j5;j++)p[i][j]=p[i-1][j];

}if(i==120)break;

}if(i==120)break;

}if(i==120)break;

}if(i==120)break;

}

printf(“%d\n”,i);

for(i=0;i120;i++)

{

for(j=0;j120;j++)

{

for(k=0;k120;k++)

{

for(l=0;l120;l++)

{

for(m=0;m120;m++)

{

for(n=0;n5;n++)

{

s[n][0]=p[i][n];

}

for(n=0;n5;n++)

{

s[n][1]=p[j][n];

}

for(n=0;n5;n++)

{

s[n][2]=p[k][n];

}

for(n=0;n5;n++)

{

s[n][3]=p[l][n];

}

for(n=0;n5;n++)

{

s[n][4]=p[m][n];

}

o+= check(s);

}

}

}

printf(“%d %d %d\n”,i,j,o);

}

}

printf(“%d end\n”,o);

return 0;

}

其中用到的代碼列表:

0 1 2 3 4

紅色 黃色 白色 綠色 藍色 0

英國 挪威 德國 丹麥 瑞典 1

啤酒 牛奶 茶 水 咖啡 2

Blen Blue Pall Dunh Prin 3

馬 鳥 狗 貓 魚 4

就是說數組s[i][j]每個i代表一個位置,每個j代表一種事物,具體代表什麼可以查上面這個表。例如s[2][3]=4就代表中間那所房子(s[i][j]的i=2,所以房子號是第三個,就是中間的)裡面的人抽的煙(s[i][j]中j=3,就是對應上表中最後標3的那行)是prince(標3的那行標4的那列是prince),再例如s[1][0]=2就代表第二座房子是白色的。

程序運行結果:

1 end (代表o=1,就是只找到一個解)

return code 0

Execution time 6609.68 seconds

文件輸出的結果:

1 1 3 3 3

4 3 2 0 0

0 0 1 2 1

3 2 4 4 4

2 4 0 1 2

按照上面的表格給出翻譯為

第一所房子 黃色 挪威 水 Dunhill 貓

第二所房子 藍色 丹麥 茶 Blends 馬

第三所房子 紅色 英國 牛奶 PallMall 鳥

第四所房子 綠色 德國 咖啡 Prince 魚

第五所房子 白色 瑞典 啤酒 BlueMast 狗

這次是程序窮舉法驗證,不知道樓主還有什麼可說的。。。如果您真的找到第二種答案,把它的細節列表發出來,大家看一看啊

愛因斯坦智商測試,請用C語言編程解決問題。

問:鄰居這個問題出自愛因斯坦,據他說,98%的人都做不出來。

有一排五間房子,每一間房子的顏色都不同。在這些房子里住著五個不同國籍的人。每個人餵養了不同的動物,喜歡不同的飲料,抽不同的雪茄。

英國人住在紅色房子里。

瑞典人養狗。

丹麥人喝茶。

綠色的房子在白色房子的左邊。

綠色房子的主人喜歡喝咖啡。

抽「坡魔」牌雪茄的人養鳥。

黃色房子的主人抽「頓山」牌雪茄。

住在中間房子的人喝牛奶。

挪威人住在第一間房子。

抽「波蘭斯」牌雪茄的人住在養貓的人旁邊。

養馬的人住在抽「頓山」牌雪茄的人旁邊。

抽「藍領」牌雪茄的人喝啤酒。

德國人抽「王子」牌雪茄。

挪威人住在藍色房子旁邊。

抽「波蘭斯」牌雪茄的人有一個喝水的鄰居。誰家養魚?

你是那2%的人嗎?

分析過程:

首先我們可以知道挪威人在1號房子 喝牛奶的人在3號房子

《挪威人住在藍色房子旁邊。》

1號挪威人旁邊只有一個房子 所以2號房子是藍色

《綠色的房子在白色房子的左邊。

綠色房子的主人喜歡喝咖啡》

此問題可以讓我們知道如果1號是綠那麼2號就是白但是2號是藍色

如果3號是綠色也不行 因為綠色房間的人喝咖啡 但3號喝牛奶

所以只有4號是綠色5號是白色就可以說得通了 (注意!就此地可以改所有的答案,這裡沒說綠色在白色的隔壁,這只是愛因斯坦的陷阱,其實有兩種答案,我們假設是隔壁,這是一種)

《英國人住在紅色房子里。》現在沒顏色的只有1號和3號怎麼知道誰是紅色呢?很簡單 就是看國籍1號是挪威人不是英國人 那3號

房子就是紅色主人是英國人 1號是黃色房間

1 2 3 4 5

挪威人 英國

紅色 藍色 黃色 綠色 白色

牛奶 咖啡

就下來有一個明顯的信息 就是《黃色房子的主人抽「頓山」牌雪茄。》

1號是紅色房間那麼他抽頓山 接下來有一個像《挪威人住在藍色房子旁邊。》的問題就是《養馬的人住在抽「頓山」牌雪茄的人旁邊》

這個也很簡單 就是紅色房間是1號 他只有一個鄰居就是2號

所以2號養馬

1 2 3 4 5

挪威人 英國

紅色 藍色 黃色 綠色 白色

牛奶 咖啡

頓山

接下來才到了愛因斯坦說過的《98%人做不出》的難度了

我們先把一個可以知道的信息找出來就是

丹麥人喝茶。

抽「波蘭斯」牌雪茄的人有一個喝水的鄰居。

抽「藍領」牌雪茄的人喝啤酒

這三個問題中都有水 我們先看看它們每個都是幾號房子的人要喝

丹麥人可能是2 4 5號房子 因為他喝茶所以可以排除4號 那丹麥就是2 5號房中的一個

1號不抽波蘭斯 可以排除(排除他不是抽波蘭斯 但它可能是喝水的)5號的鄰居(4號)喝咖啡可以排除(4號)3號又喝牛奶所以喝水的人可能是1 2 5號房間中的一個

1號不抽藍領可以排除 3號喝牛奶可以排除 4號喝咖啡可以排除所以喝啤酒的人可能是2 5號

1 5 2號可能喝水

2 5號可能喝茶

2 5號可能喝啤酒

這一點要注意了 喝水的只能是1號 因為大家想想 如果5號喝水2號喝茶 要是這樣的話啤酒就誰喝呢?1號?不可能因為已經被排除了 如果2號喝水也一樣 所以1號喝水

1 2 3 4 5

挪威人 英國

紅色 藍色 黃色 綠色 白色

水 牛奶 咖啡

頓山

接下來我們分析《抽「波蘭斯」牌雪茄的人有一個喝水的鄰居。》

1號喝水 那麼他只有一個鄰居 就是2號 所以2號抽波蘭斯

1 2 3 4 5

挪威人 英國

紅色 藍色 黃色 綠色 白色

水 牛奶 咖啡

頓山 波蘭斯

用同樣的方法排除:

抽「藍領」牌雪茄的人喝啤酒

德國人抽「王子」牌雪茄

抽「坡魔」牌雪茄的人養鳥。

首先我們看藍領 1號抽煙喝水 那不是他 2號抽波蘭斯 不是他

3號喝牛奶也不是 4號喝咖啡也一樣 只有5號的人可以說得通

現在是德國人的 1號是挪威人抽頓山 不是 2號波蘭斯 不是

3號是英國人 不是 5號抽藍領也不是 所以只有4號說得通

《抽「坡魔」牌雪茄的人養鳥》現在這個不用分析了 因為只有3號要抽的煙還沒找到所以只有他抽坡魔了 並且養鳥

1 2 3 4 5

挪威 英國 德國

紅色 藍色 黃色 綠色 白色

水 牛奶 咖啡 啤酒

馬 鳥

頓山 波蘭斯 坡魔 王子 藍領

《抽「波蘭斯」牌雪茄的人住在養貓的人旁邊》

2號抽波蘭斯 他又兩個鄰居 一個是1號一個是3號 3號養鳥 所以不是他 那只有1號了

《瑞典人養狗。》

1號養貓的挪威人不可能 2號養馬 不是 3號英國人養鳥不是

4號德國人 也不是 就只有5號是瑞典人了 那2號是丹麥人喝茶

就剩下一個4號沒養寵物了 那麼他當然是養 魚

1 2 3 4 5

挪威 丹麥 英國 德國 瑞典

紅色 藍色 黃色 綠色 白色

水 茶 牛奶 咖啡 啤酒

貓 馬 鳥 魚 狗

頓山 波蘭斯 坡魔 王子 藍領

樓主我發誓這是我親手寫的!!!!!! 求最佳!!!!!

愛因斯坦出了一道題,他說世界上有90%的人回答不出,看看你是否屬於10%。

呵呵,很典型的一個計算機推理題,有類似的程序,看看這個對你有啟發,這個是一個釣魚的推斷程序:

/** 這道迷題出自1981年柏林的德國邏輯思考學院

* 原題為:

1.有5棟5種顏色的房子

2.每一位房子的主人國籍都不同

3.這五個人每人只喝一個牌子的飲料,只抽一個牌子的香煙,只養一種寵物

4.沒有人有相同的寵物,抽相同牌子的煙,喝相同牌子的飲料

已知條件:

1.英國人住在紅房子里

2.瑞典人養了一條狗

3.丹麥人喝茶

4.綠房子在白房子的左邊

5.綠房子主人喝咖啡

6.抽pallmall煙的人養了一隻鳥

7.黃房子主人抽dunhill煙

8.住在中間房子的人喝牛奶

9.挪威人住在第一間房子

10.抽混合煙的人住在養貓人的旁邊

11.養馬人住在抽dunhill煙人的旁邊

12.抽bluemaster煙的人喝啤酒

13.德國人抽prince煙

14.挪威人住在藍房子旁邊

15.抽混合煙的人的鄰居喝礦泉水

問題:誰養魚?

據說世界上只有2%的人能出答案。

就連大名鼎鼎的愛因斯坦也成為此題大傷腦筋。

*/

/*

* @author cds

*

* TODO To change the template for this generated type comment go to Window –

* Preferences – Java – Code Style – Code Templates

*/

public class WhoFeedsFish {

public static final int NATIONALITY_ENGLISH = 1;

public static final int NATIONALITY_SWIDISH = 2;

public static final int NATIONALITY_DAMARK = 3;

public static final int NATIONALITY_NORWAY = 4;

public static final int NATIONALITY_GERMAN = 5;

private int[] nationalities = { 1, 2, 3, 4, 5 };

public static final int COLOR_RED = 1;

public static final int COLOR_GREEN = 2;

public static final int COLOR_YELLOW = 3;

public static final int COLOR_WHITE = 4;

public static final int COLOR_BLUE = 5;

private int[] colors = { 1, 2, 3, 4, 5 };

public static final int PET_DOG = 1;

public static final int PET_BIRD = 2;

public static final int PET_CAT = 3;

public static final int PET_HORSE = 4;

public static final int PET_FISH = 5;

private int[] pets = { 1, 2, 3, 4, 5 };

public static final int DRINK_TEA = 1;

public static final int DRINK_COFFEE = 2;

public static final int DRINK_MILK = 3;

public static final int DRINK_BEER = 4;

public static final int DRINK_WATER = 5;

private int[] drinks = { 1, 2, 3, 4, 5 };

public static final int TOBACCO_PALLMALL = 1;

public static final int TOBACCO_DUNHILL = 2;

public static final int TOBACCO_BLUEMASTER = 3;

public static final int TOBACCO_PRINCE = 4;

public static final int TOBACCO_MIXED = 5;

private int[] tobaccoes = { 1, 2, 3, 4, 5 };

private int[][] key = { nationalities, colors, pets, drinks, tobaccoes };

private int[][] values = { { 1, 2, 3, 4, 5 }, { 1, 2, 3, 5, 4 },

{ 1, 2, 4, 3, 5 }, { 1, 2, 4, 5, 3 }, { 1, 2, 5, 3, 4 },

{ 1, 2, 5, 4, 3 }, { 1, 3, 2, 4, 5 }, { 1, 3, 2, 5, 4 },

{ 1, 3, 4, 2, 5 }, { 1, 3, 4, 5, 2 }, { 1, 3, 5, 2, 4 },

{ 1, 3, 5, 4, 2 }, { 1, 4, 2, 3, 5 }, { 1, 4, 2, 5, 3 },

{ 1, 4, 3, 2, 5 }, { 1, 4, 3, 5, 2 }, { 1, 4, 5, 2, 3 },

{ 1, 4, 5, 3, 2 }, { 1, 5, 2, 3, 4 }, { 1, 5, 2, 4, 3 },

{ 1, 5, 3, 2, 4 }, { 1, 5, 3, 4, 2 }, { 1, 5, 4, 2, 3 },

{ 1, 5, 4, 3, 2 }, { 2, 1, 3, 4, 5 }, { 2, 1, 3, 5, 4 },

{ 2, 1, 4, 3, 5 }, { 2, 1, 4, 5, 3 }, { 2, 1, 5, 3, 4 },

{ 2, 1, 5, 4, 3 }, { 2, 3, 1, 4, 5 }, { 2, 3, 1, 5, 4 },

{ 2, 3, 4, 1, 5 }, { 2, 3, 4, 5, 1 }, { 2, 3, 5, 1, 4 },

{ 2, 3, 5, 4, 1 }, { 2, 4, 1, 3, 5 }, { 2, 4, 1, 5, 3 },

{ 2, 4, 3, 1, 5 }, { 2, 4, 3, 5, 1 }, { 2, 4, 5, 1, 3 },

{ 2, 4, 5, 3, 1 }, { 2, 5, 1, 3, 4 }, { 2, 5, 1, 4, 3 },

{ 2, 5, 3, 1, 4 }, { 2, 5, 3, 4, 1 }, { 2, 5, 4, 1, 3 },

{ 2, 5, 4, 3, 1 }, { 3, 1, 2, 4, 5 }, { 3, 1, 2, 5, 4 },

{ 3, 1, 4, 2, 5 }, { 3, 1, 4, 5, 2 }, { 3, 1, 5, 2, 4 },

{ 3, 1, 5, 4, 2 }, { 3, 2, 1, 4, 5 }, { 3, 2, 1, 5, 4 },

{ 3, 2, 4, 1, 5 }, { 3, 2, 4, 5, 1 }, { 3, 2, 5, 1, 4 },

{ 3, 2, 5, 4, 1 }, { 3, 4, 1, 2, 5 }, { 3, 4, 1, 5, 2 },

{ 3, 4, 2, 1, 5 }, { 3, 4, 2, 5, 1 }, { 3, 4, 5, 1, 2 },

{ 3, 4, 5, 2, 1 }, { 3, 5, 1, 2, 4 }, { 3, 5, 1, 4, 2 },

{ 3, 5, 2, 1, 4 }, { 3, 5, 2, 4, 1 }, { 3, 5, 4, 1, 2 },

{ 3, 5, 4, 2, 1 }, { 4, 1, 2, 3, 5 }, { 4, 1, 2, 5, 3 },

{ 4, 1, 3, 2, 5 }, { 4, 1, 3, 5, 2 }, { 4, 1, 5, 2, 3 },

{ 4, 1, 5, 3, 2 }, { 4, 2, 1, 3, 5 }, { 4, 2, 1, 5, 3 },

{ 4, 2, 3, 1, 5 }, { 4, 2, 3, 5, 1 }, { 4, 2, 5, 1, 3 },

{ 4, 2, 5, 3, 1 }, { 4, 3, 1, 2, 5 }, { 4, 3, 1, 5, 2 },

{ 4, 3, 2, 1, 5 }, { 4, 3, 2, 5, 1 }, { 4, 3, 5, 1, 2 },

{ 4, 3, 5, 2, 1 }, { 4, 5, 1, 2, 3 }, { 4, 5, 1, 3, 2 },

{ 4, 5, 2, 1, 3 }, { 4, 5, 2, 3, 1 }, { 4, 5, 3, 1, 2 },

{ 4, 5, 3, 2, 1 }, { 5, 1, 2, 3, 4 }, { 5, 1, 2, 4, 3 },

{ 5, 1, 3, 2, 4 }, { 5, 1, 3, 4, 2 }, { 5, 1, 4, 2, 3 },

{ 5, 1, 4, 3, 2 }, { 5, 2, 1, 3, 4 }, { 5, 2, 1, 4, 3 },

{ 5, 2, 3, 1, 4 }, { 5, 2, 3, 4, 1 }, { 5, 2, 4, 1, 3 },

{ 5, 2, 4, 3, 1 }, { 5, 3, 1, 2, 4 }, { 5, 3, 1, 4, 2 },

{ 5, 3, 2, 1, 4 }, { 5, 3, 2, 4, 1 }, { 5, 3, 4, 1, 2 },

{ 5, 3, 4, 2, 1 }, { 5, 4, 1, 2, 3 }, { 5, 4, 1, 3, 2 },

{ 5, 4, 2, 1, 3 }, { 5, 4, 2, 3, 1 }, { 5, 4, 3, 1, 2 },

{ 5, 4, 3, 2, 1 } };

public void printKey() {

for (int i = 0; i 5; i++) {

print(“nationality”, key[0][i]);

}

System.out.println();

for (int i = 0; i 5; i++) {

print(“color”, key[1][i]);

}

System.out.println();

for (int i = 0; i 5; i++) {

print(“pet”, key[2][i]);

}

System.out.println();

for (int i = 0; i 5; i++) {

print(“drink”, key[3][i]);

}

System.out.println();

for (int i = 0; i 5; i++) {

print(“tobacco”, key[4][i]);

}

System.out.println();

}

public void print(String item, int index) {

if (false) {

} else if (“nationality”.equals(item)) {

switch (index) {

case 1:

System.out.print(“英國人\t\t”);

break;

case 2:

System.out.print(“瑞典人\t\t”);

break;

case 3:

System.out.print(“丹麥人\t\t”);

break;

case 4:

System.out.print(“挪威人\t\t”);

break;

case 5:

System.out.print(“德國人\t\t”);

break;

}

} else if (“color”.equals(item)) {

switch (index) {

case 1:

System.out.print(“紅房子\t\t”);

break;

case 2:

System.out.print(“綠房子\t\t”);

break;

case 3:

System.out.print(“黃房子\t\t”);

break;

case 4:

System.out.print(“白房子\t\t”);

break;

case 5:

System.out.print(“藍房子\t\t”);

break;

}

} else if (“pet”.equals(item)) {

switch (index) {

case 1:

System.out.print(“狗\t\t”);

break;

case 2:

System.out.print(“鳥\t\t”);

break;

case 3:

System.out.print(“貓\t\t”);

break;

case 4:

System.out.print(“馬\t\t”);

break;

case 5:

System.out.print(“魚\t\t”);

break;

}

} else if (“drink”.equals(item)) {

switch (index) {

case 1:

System.out.print(“茶\t\t”);

break;

case 2:

System.out.print(“咖啡\t\t”);

break;

case 3:

System.out.print(“牛奶\t\t”);

break;

case 4:

System.out.print(“啤酒\t\t”);

break;

case 5:

System.out.print(“水\t\t”);

break;

}

} else if (“tobacco”.equals(item)) {

switch (index) {

case 1:

System.out.print(“PALLMALL\t\t”);

break;

case 2:

System.out.print(“DUNHILL\t\t”);

break;

case 3:

System.out.print(“BLUEMASTER\t\t”);

break;

case 4:

System.out.print(“PRINCE\t\t”);

break;

case 5:

System.out.print(“混合煙\t\t”);

break;

}

}

}

private boolean check01() {

boolean ret = true;

// 條件1:英國人住在紅房子里 01

for (int i = 0; i nationalities.length; i++) {

if (key[0][i] == NATIONALITY_ENGLISH) {

if (key[1][i] != COLOR_RED) {

ret = false;

}

break;

}

}

return ret;

}

private boolean check02() {

boolean ret = true;

// 條件2:瑞典人養了一條狗 02

for (int i = 0; i nationalities.length; i++) {

if (key[0][i] == NATIONALITY_SWIDISH) {

if (key[2][i] != PET_DOG) {

ret = false;

}

break;

}

}

return ret;

}

private boolean check1() {

boolean ret = true;

// 條件4:綠房子在白房子的左邊 1

for (int i = 0; i colors.length; i++) {

if (key[1][i] == COLOR_GREEN) {

for (int j = 0; j colors.length; j++) {

if (key[1][j] == COLOR_WHITE) {

if (i j) {

ret = false;

}

break;

}

}

}

}

return ret;

}

private boolean check3() {

// 條件8:住在中間房子的人喝牛奶 3

return key[3][2] == DRINK_MILK ? true : false;

}

// 條件9:挪威人住在第一間房子 0

private boolean check0() {

if (key[0][0] != NATIONALITY_NORWAY) {

return false;

}

return true;

}

private boolean check011() {

// 14.挪威人住在藍房子旁邊 01

boolean ret = false;

for (int i = 0; i nationalities.length; i++) {

if (key[0][i] == NATIONALITY_NORWAY) {

for (int j = 0; j colors.length; j++) {

if (key[1][j] == COLOR_BLUE) {

if (Math.abs(i – j) == 1) {

return true;

} else {

return false;

}

}

}

}

}

return ret;

}

// /////////////////////////////////////////////////////////////////

private boolean check() {

boolean ret = true;

// 條件1:英國人住在紅房子里 01

ret = check01();

if (ret == false)

return false;

// 條件2:瑞典人養了一條狗 02

ret = check02();

if (ret == false)

return false;

// 條件3:丹麥人喝茶 03

for (int i = 0; i nationalities.length; i++) {

if (key[0][i] == NATIONALITY_DAMARK) {

if (key[3][i] != DRINK_TEA) {

return false;

} else {

break;

}

}

}

// 條件4:綠房子在白房子的左邊 1

ret = check1();

if (ret == false)

return false;

// 條件5:綠房子主人喝咖啡 13

for (int i = 0; i colors.length; i++) {

if (key[1][i] == COLOR_GREEN) {

if (key[3][i] != DRINK_COFFEE) {

return false;

} else {

break;

}

}

}

// 條件6:抽pallmall煙的人養了一隻鳥 24

for (int i = 0; i tobaccoes.length; i++) {

if (key[4][i] == TOBACCO_PALLMALL) {

if (key[2][i] != PET_BIRD) {

return false;

} else {

break;

}

}

}

// 條件7:黃房子主人抽dunhill煙 14

for (int i = 0; i colors.length; i++) {

if (key[1][i] == COLOR_YELLOW) {

if (key[4][i] != TOBACCO_DUNHILL) {

return false;

} else {

break;

}

}

}

// 條件8:住在中間房子的人喝牛奶 3

ret = check3();

if (ret == false)

return false;

// 條件9:挪威人住在第一間房子 0

ret = check0();

if (ret == false)

return false;

// 條件10:抽混合煙的人住在養貓人的旁邊 24

for (int i = 0; i tobaccoes.length; i++) {

if (key[4][i] == TOBACCO_MIXED) {

for (int j = 0; j pets.length; j++) {

if (key[2][j] == PET_CAT) {

if (i – j != 1 i – j != -1) {

return false;

}

break;

}

}

}

}

// 條件11:養馬人住在抽dunhill煙人的旁邊 24

for (int i = 0; i pets.length; i++) {

if (key[2][i] == PET_HORSE) {

for (int j = 0; j tobaccoes.length; j++) {

if (key[4][j] == TOBACCO_DUNHILL) {

if (i – j != 1 i – j != -1) {

return false;

}

break;

}

}

}

}

// 條件12:抽bluemaster煙的人喝啤酒 34

for (int i = 0; i tobaccoes.length; i++) {

if (key[4][i] == TOBACCO_BLUEMASTER) {

if (key[3][i] != DRINK_BEER) {

return false;

} else {

break;

}

}

}

// 13.德國人抽prince煙 04

for (int i = 0; i nationalities.length; i++) {

if (key[0][i] == NATIONALITY_GERMAN) {

if (key[4][i] != TOBACCO_PRINCE) {

return false;

} else {

break;

}

}

}

// 14.挪威人住在藍房子旁邊 01

ret = check011();

if (ret == false)

return false;

// 15.抽混合煙的人的鄰居喝礦泉水 34

for (int i = 0; i tobaccoes.length; i++) {

if (key[4][i] == TOBACCO_MIXED) {

for (int j = 0; j drinks.length; j++) {

if (key[3][j] == DRINK_WATER) {

if ((i – j != 1) (i – j != -1)) {

return false;

} else {

break;

}

}

}

}

}

return ret;

}

public void run() {

int count = 0;

for (int a = 0; a 120; a++) {

for (int i = 0; i 5; i++) {

key[0][i] = values[a][i];

}

if (!check0()) {

continue;

}

for (int b = 0; b 120; b++) {

for (int i = 0; i 5; i++) {

key[1][i] = values[b][i];

}

if (!check01() || !check011() || !check1()) {

continue;

}

for (int c = 0; c 120; c++) {

for (int i = 0; i 5; i++) {

key[2][i] = values[c][i];

}

if (!check02()) {

continue;

}

for (int d = 0; d 120; d++) {

for (int i = 0; i 5; i++) {

key[3][i] = values[d][i];

}

// if(!check()){continue;}

for (int e = 0; e 120; e++) {

for (int i = 0; i 5; i++) {

key[4][i] = values[e][i];

}

if (!check()) {

continue;

}

System.out.println(“答案” + (++count));

printKey();

System.out

.println(“———————————————–“);

}

}

}

}

}

}

public static void main(String[] args) {

WhoFeedsFish wff = new WhoFeedsFish();

System.out.println(“==========Start==========”);

wff.run();

System.out.println(“==========End==========”);

}

}

c語言愛因斯坦 誰養魚

#includestdio.h

char*COL[]={NULL,”紅”,”黃”,”綠”,”藍”,”白”};

char*PAD[]={NULL,”狗”,”貓”,”魚”,”鳥”,”馬”};

char*DRK[]={NULL,”茶 “,”牛奶”,”咖啡”,”啤酒”,”水 “};

char*GUO[]={NULL,”挪威”,”英國”,”德國”,”丹麥”,”瑞典”};

char*SMK[]={NULL,”Blends”,”BlueMaster”,”Dunhill”,”Pall Mall”,”Prince”};

struct{ char guojia, color, pads, drink, smoke; } aa[5];

int OK(void)

{

int i,j;

for(i=0;i5;i++)

if(aa[i].guojia==2 aa[i].color==1)goto next1;

return 0;

next1:

for(i=0;i5;i++)

if(aa[i].guojia==5 aa[i].pads==1)goto next2;

return 0;

next2:

for(i=0;i5;i++)

if(aa[i].guojia==4 aa[i].drink==1)goto next3;

return 0;

next3:

for(i=0;i5;i++)

if(aa[i].color==3)goto next3_1;

return 0;

next3_1:

for(j=i+1;j5;j++)

if(aa[j].color==5)goto next4;

return 0;

next4:

for(i=0;i5;i++)

if(aa[i].color==3 aa[i].drink==3)goto next5;

return 0;

next5:

for(i=0;i5;i++)

if(aa[i].smoke==4 aa[i].pads==4)goto next6;

return 0;

next6:

for(i=0;i5;i++)

if(aa[i].color==2 aa[i].smoke==3)goto next7;

return 0;

next7:

for(i=0;i5;i++)

if(aa[i].guojia==3 aa[i].smoke==5)goto next10;

return 0;

next10:

for(i=0;i5;i++)

if(aa[i].smoke==2 aa[i].drink==4)goto next11;

return 0;

next11:

for(i=0;i5;i++)

if(aa[i].smoke==3)goto next12_1;

next12_1:

if(i==0){if(aa[1].pads==5)goto next13;}

else if(i==4){if(aa[3].pads==5)goto next13;}

else if(aa[i-1].pads==5||aa[i+1].pads==5)goto next13;

return 0;

next13:

for(i=0;i5;i++)

if(aa[i].smoke==1)goto next13_1;

next13_1:

if(i==0){if(aa[1].pads==2)goto next14;}

else if(i==4){if(aa[3].pads==2)goto next14;}

else if(aa[i-1].pads==2||aa[i+1].pads==2)goto next14;

return 0;

next14:

for(i=0;i5;i++)

if(aa[i].smoke==1)goto next14_1;

next14_1:

if(i==0){if(aa[1].drink==5)goto next15;}

else if(i==4){if(aa[3].drink==5)goto next15;}

else if(aa[i-1].drink==5||aa[i+1].drink==5)goto next15;

return 0;

next15:

return 1;

}

char color[4]={1,2,3,5};

char drink[4]={1,3,4,5};

char guojia[4]={2,3,4,5};

char smoke[]={1,2,3,4,5};

char pads[5]={1,2,3,4,5};

int rot(char a[],int n)

{ int i,j,k,t;

for(k=n-1;k0;k–)

if(a[k-1]a[k])break;

if(k==0)

{ for(i=0,j=n-1;ij;i++,j–)

{char t=a[i];

a[i]=a[j];

a[j]=t;

}

return 0;

}

t=a[k-1];i=k;

for(j=k+1;jn;j++)

if(ta[j]a[j]a[i])i=j;

a[k-1]=a[i];a[i]=t;

for(i=k;in-1;i++)

for(j=k;jn-1+k-i;j++)

if(a[j]a[j+1])

{ t=a[j];

a[j]=a[j+1];

a[j+1]=t;

}

return 1;

}

int main()

{ int i,j,k,ans=0;

int i1,i2,i3,i4,i5;

aa[1].color=4;

aa[2].drink=2;

aa[0].guojia=1;

for(i1=0;i124;i1++){

aa[0].color=color[0];

aa[2].color=color[1];

aa[3].color=color[2];

aa[4].color=color[3];

rot(color,4);

for(i2=0;i224;i2++){

aa[0].drink=drink[0];

aa[1].drink=drink[1];

aa[3].drink=drink[2];

aa[4].drink=drink[3];

rot(drink,4);

for(i3=0;i324;i3++){

aa[1].guojia=guojia[0];

aa[2].guojia=guojia[1];

aa[3].guojia=guojia[2];

aa[4].guojia=guojia[3];

rot(guojia,4);

for(i4=0;i4120;i4++){

for(i=0;i5;i++)

aa[i].smoke=smoke[i];

rot(smoke,5);

for(i5=0;i5120;i5++){

for(j=0;j5;j++)

aa[j].pads=pads[j];

rot(pads,5);

if(OK()){

printf(“———————第%d種解———————\n”,++ans);

for(k=0;k5;k++)

printf(“第%d戶: %s人 %s房子 養%s 喝%s 抽%s\n”,k+1,GUO[aa[k].guojia],

COL[aa[k].color],PAD[aa[k].pads],DRK[aa[k].drink],SMK[aa[k].smoke]);

}}}}}}

return 0;

}

如何用語言解決這個問題

1)位於最中間的屋主喝牛奶:可以得出第三間房子的主人喝的飲料是牛奶。

(2)挪威人住在第一間房屋裡:可以得出第一間房子的主人國籍是挪威人。

(3)挪威人住在藍色房子隔壁:可以得出第二間房子的主人房子的顏色是藍色。

(4)綠色的房子在白色的房子的左邊;綠色房屋的屋主喝咖啡:由於綠色房子和白色房子是連在一起的,所以現在可以選擇的房子顏色是3、4、5號,綠色房子和白色房子在這三間房子裡面;而綠色房子在白色房子的左邊,因此,若3號是綠色,4號就是白色,若4號是綠色,5號是白色,由於綠色房子的屋主喝咖啡,因此,綠色房子不可能是3號,因此,4號是綠色,5號是白色;第四間房子的主人喝的飲料是咖啡。

(5)英國人住在紅色房屋裡:1號房子是挪威人,因此1號排除,2、4、5號房子均有顏色,因此,3號房子是紅色的,國籍是英國人。

(6)黃色屋主抽Dunhill:剩餘的1號房子的顏色是黃色,房主抽的是Dunhill。

(7)養馬的屋主在抽Dunhill的人家的隔壁:抽Dunhill是1號,因此2號養馬。

(8)抽Blue Master的屋主喝啤酒:現在飲料和香煙都沒有確定的是2號和5號;假設:若5號是,5號房子主人和啤酒,抽Blue Master。

(9)在(8)假設成立的前提下,丹麥人喝茶:國籍和飲料都沒有確定的只有2號,因此,2號房主的國籍是丹麥人,喝的是茶。

(10)在(8)假設成立的前提下,德國人抽Prince:國籍沒有定的是4號和5號,而5號抽Blue Master,因此,4號房主是德國人,抽Prince。

(11)在(8)假設成立的前提下,瑞典人養了一隻狗:只剩下5號,因此,5號房主國籍是瑞典人,養狗。

(12)在(8)假設成立的前提下,抽Pall Mall香煙的屋主養鳥:香煙和寵物都沒有確定的只有3號,因此,3號房主抽Pall Mall,養鳥。

(13)在(8)假設成立的前提下,抽Blend的人住在養貓人家的隔壁:只剩下2號,因此,2號房主抽Blend,1號房主養貓。

(14)在(8)假設成立的前提下,只喝開水的人家住在抽Blend的隔壁:只剩下1號,1號房主喝的飲料是開水。

(15)最後剩一個就是養魚。

(16)因此,(8)的假設成立。

最後得到結論 德國人養的魚

原創文章,作者:UGUIW,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/324974.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
UGUIW的頭像UGUIW
上一篇 2025-01-13 13:23
下一篇 2025-01-13 13:23

相關推薦

  • Python簡單數學計算

    本文將從多個方面介紹Python的簡單數學計算,包括基礎運算符、函數、庫以及實際應用場景。 一、基礎運算符 Python提供了基礎的算術運算符,包括加(+)、減(-)、乘(*)、除…

    編程 2025-04-29
  • AES加密解密演算法的C語言實現

    AES(Advanced Encryption Standard)是一種對稱加密演算法,可用於對數據進行加密和解密。在本篇文章中,我們將介紹C語言中如何實現AES演算法,並對實現過程進…

    編程 2025-04-29
  • 學習Python對學習C語言有幫助嗎?

    Python和C語言是兩種非常受歡迎的編程語言,在程序開發中都扮演著非常重要的角色。那麼,學習Python對學習C語言有幫助嗎?答案是肯定的。在本文中,我們將從多個角度探討Pyth…

    編程 2025-04-29
  • Python滿天星代碼:讓編程變得更加簡單

    本文將從多個方面詳細闡述Python滿天星代碼,為大家介紹它的優點以及如何在編程中使用。無論是剛剛接觸編程還是資深程序員,都能從中獲得一定的收穫。 一、簡介 Python滿天星代碼…

    編程 2025-04-29
  • Python被稱為膠水語言

    Python作為一種跨平台的解釋性高級語言,最大的特點是被稱為”膠水語言”。 一、簡單易學 Python的語法簡單易學,更加人性化,這使得它成為了初學者的入…

    編程 2025-04-29
  • Python海龜代碼簡單畫圖

    本文將介紹如何使用Python的海龜庫進行簡單畫圖,並提供相關示例代碼。 一、基礎用法 使用Python的海龜庫,我們可以控制一個小海龜在窗口中移動,並利用它的「畫筆」在窗口中繪製…

    編程 2025-04-29
  • OpenJudge答案1.6的C語言實現

    本文將從多個方面詳細闡述OpenJudge答案1.6在C語言中的實現方法,幫助初學者更好地學習和理解。 一、需求概述 OpenJudge答案1.6的要求是,輸入兩個整數a和b,輸出…

    編程 2025-04-29
  • Python按位運算符和C語言

    本文將從多個方面詳細闡述Python按位運算符和C語言的相關內容,並給出相應的代碼示例。 一、概述 Python是一種動態的、面向對象的編程語言,其按位運算符是用於按位操作的運算符…

    編程 2025-04-29
  • Python語言由荷蘭人為中心的全能編程開發工程師

    Python語言是一種高級語言,很多編程開發工程師都喜歡使用Python語言進行開發。Python語言的創始人是荷蘭人Guido van Rossum,他在1989年聖誕節期間開始…

    編程 2025-04-28
  • Python語言設計基礎第2版PDF

    Python語言設計基礎第2版PDF是一本介紹Python編程語言的經典教材。本篇文章將從多個方面對該教材進行詳細的闡述和介紹。 一、基礎知識 本教材中介紹了Python編程語言的…

    編程 2025-04-28

發表回復

登錄後才能評論