• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            /*愛因斯坦的思考題
            在網上看到了個有趣的邏輯推理題,愛因斯坦聲稱世界上只有2%的人能解出:

            有五個具有五種不同顏色的房間排成一排;

            每個房間里分別住著一個不同國籍的人;

            每個人都在喝一種特定品牌的飲料,抽一特定品牌的煙,養一特定的寵物;

            沒有任意兩個人在抽相同品牌的香煙,或喝相同品牌的飲料,或養相同的寵物。

              問題:誰在養魚作為寵物?

              愛因斯坦給出如下線索:


            英國人住在紅色的房子里;

            瑞典人養狗作為寵物;

            丹麥人喝茶;

            綠房子緊挨著白房子,在白房子的左邊;

            綠房子的主人喝咖啡;

            抽Pall Mall牌香煙的人養鳥;

            黃色房子里的人抽Dunhill牌香煙;

            住在中間那個房子里的人喝牛奶;

            挪威人住在第一個房子里面;

            抽Blends牌香煙的人和養貓的人相鄰;

            養馬的人和抽Dunhill牌香煙的人相鄰;

            抽BlueMaster牌香煙的人喝啤酒;

            德國人抽Prince牌香煙;

            挪威人和住在藍房子的人相鄰;

            抽Blends牌香煙的人和喝礦泉水的人相鄰。

                      
                       國家           房子           寵物           飲料           香煙
                       挪威           黃色             貓         礦泉水        Dunhill
                       丹麥           藍色             馬             茶         Blends
                       英國           紅色             鳥           牛奶       PallMall
                       德國           綠色             魚           咖啡         Prince
                       瑞典           白色             狗           啤酒     BlueMaster
            */
            /*
            算法思路:
            以房子的位置為主序,把國籍,顏色,寵物,飲料,香煙都作為該房子的一個成員,每一個成員都有可能
            處在任何位置,為所有成員窮舉每一個位置,再根據已知條件進行適當剪枝,找到唯一的解
            */

            #include <iostream>
            #include <string>
            #include <fstream>

            using namespace std;

            int main(void)
            {
             string Title[5] = {"國籍","顏色","寵物","飲料","香煙"};
             struct {
              string nation;
              string color;
              string pet;
              string drink;
              string cigarette;
             } House[5];//房子從左到右編號

             House[0].nation = "挪威";//挪威人住在第一個房子里面
             House[1].color = "藍色";//挪威人和住在藍房子的人相鄰,即藍房子是第2個房子
             House[2].drink = "牛奶";// 住在中間那個房子里的人喝牛奶

             for (int e=1; e<5; e++) //表示英國人的房子序號
             for (int r=1; r<5; r++)//表示瑞典人的房子序號
             for (int d=1; d<5; d++)//表示丹麥人的房子序號
             for (int g=0; g<5; g++)//表示綠房子的序號
             for (int p=0; p<5; p++)//表示抽Pall Mall牌香煙的人的房子序號
             for (int y=0; y<5; y++)//表示黃色房子的序號
             for (int b=0; b<5; b++)//表示喝啤酒人的房子序號
             for (int h=0; h<5; h++)//表示養馬的人的房子序號
             for (int cat=0; cat<5; cat++)//表示養貓的人的房子序號
             {
              int Germany = 10 - 0 - e - r - d; //表示德國人的房子序號,德國人抽Prince牌香煙;
              int Blends = 10 - p - y - b - Germany;//表示抽Blends牌香煙的人的房子序號
              int white = 10 - 1 - e - g - y; //表示白房子的序號
              int water = 10 - 2 - d - g - b; //表示喝礦泉水的人的房子序號
              int fish = 10 - r - p - h - cat;//表示養魚的人的房子序號
              
              bool A1 = (e!=1); //英國人住在紅色的房子里;根據房子和國家判斷
              bool A2 = (r!=e); //瑞典人養狗作為寵物;根據國家和寵物判斷
              bool A3 = (d!=e && d!=r && d!=2);//丹麥人喝茶;根據國家和飲料判斷
              bool A4 = (g!=1 && g!=2 && g!=e && g!=d);//綠房子的主人喝咖啡;根據顏色和飲料判斷
              bool A5 = (p!=r); //抽Pall Mall牌香煙的人養鳥;根據香煙和寵物判斷
              bool A6 = (y!=e && y!=1 && y!=g && y!=p);//黃色房子里的人抽Dunhill牌香煙;根據顏色和香煙判斷
              bool A7 = (b!=2 && b!=d && b!=g && b!=p && b!=y);//抽BlueMaster牌香煙的人喝啤酒;根據香煙和飲料判斷
              bool A8 = (h!=r && h!=p && (h==y+1 || h==y-1));//養馬的人和抽Dunhill牌香煙的人相鄰,根據香煙和寵物判斷
              bool A9 = (white == g + 1); //綠房子緊挨著白房子,在白房子的左邊;
              bool A0 = (cat==Blends-1 || cat==Blends+1);//Blends牌香煙的人和養貓的人相鄰;
              bool A11 = (water==Blends-1 || water==Blends+1);//抽Blends牌香煙的人和喝礦泉水的人相鄰
              
              if (A1 && A2 && A3 && A4 && A5 && A6 && A7 && A8 && A9 && A0 && A11)
              {//把滿足條件的序號填入結構數組
               House[e].nation = "英國";
               House[e].color = "紅色";
               House[r].nation = "瑞典";
               House[r].pet = "狗";
               House[d].nation = "丹麥";
               House[d].drink = "茶";
               House[g].color = "綠色";
               House[g].drink = "咖啡";
               House[p].cigarette = "Pall Mall";
               House[p].pet = "鳥";
               House[y].color = "黃色";
               House[y].cigarette = "Dunhill";
               House[b].cigarette = "BlueMaster";
               House[b].drink = "啤酒";
               House[h].pet = "馬";
               House[Germany].nation = "德國";
               House[Germany].cigarette = "Prince";
               House[Blends].cigarette = "Blends";
               House[white].color = "白色";
               House[water].drink = "礦泉水";
               House[cat].pet = "貓";
               House[fish].pet = "魚"; 
               
               goto end;
              }
             }
            end:
             for (int i=0; i<5; i++)
              cout << Title[i] << "\t";
             cout << endl << endl;
             
             for (int i=0; i<5; i++)
             {
              cout << House[i].nation << "\t";
              cout << House[i].color << "\t";
              cout << House[i].pet << "\t";
              cout << House[i].drink << "\t";
              cout << House[i].cigarette << "\t";
              cout << endl;
             }
             //輸出到文件
             ofstream out("愛因斯坦的思考題.txt");
             for (int i=0; i<5; i++)
              out << Title[i] << "\t";
             out << endl << endl;
             
             for (int i=0; i<5; i++)
             {
              out << House[i].nation << "\t";
              out << House[i].color << "\t";
              out << House[i].pet << "\t";
              out << House[i].drink << "\t";
              out << House[i].cigarette << "\t";
              out << endl;
             }
             out.close();
             
               system("pause");
               return 0;
            }

            Posted on 2006-12-06 22:31 夢想飛揚 閱讀(3083) 評論(18)  編輯 收藏 引用

            Feedback

            # re: 愛因斯坦的思考題  回復  更多評論   

            2006-12-08 15:13 by skinny_
            "抽Pall Mall牌香煙的人養鳥"
            看看你的答案,有養鳥的人么?

            我的印象里,這似乎是個無解的題目,因為缺少條件,還少了一個人,你的答案也證明了這一點,有兩個人養魚

            # re: 愛因斯坦的思考題  回復  更多評論   

            2006-12-08 22:45 by 夢想飛揚
            呵呵,我開始確實大意了
            但如果第一次碰到合適的答案就輸出的話,也可以找到一個答案的.
            為了不誤人子弟,代碼我已經改過來了.

            # re: 愛因斯坦的思考題  回復  更多評論   

            2006-12-10 16:31 by 曦恝恝
            收藏了 !

            # re: 愛因斯坦的思考題  回復  更多評論   

            2006-12-10 16:41 by 曦恝恝
            收藏了 !1


            # re: 愛因斯坦的思考題  回復  更多評論   

            2007-03-20 20:04 by pengkuny
            確實很精彩,尤其是"{//把滿足條件的序號填入結構數組"這一段,
            加上前面
            House[0].nation = "挪威";//挪威人住在第一個房子里面
            House[1].color = "藍色";//挪威人和住在藍房子的人相鄰,即藍房子是第2個房子
            House[2].drink = "牛奶";// 住在中間那個房子里的人喝牛奶
            總共25個完美的信息.

            # re: 愛因斯坦的思考題  回復  更多評論   

            2007-06-18 09:25 by 倔強超人
            恩 ,跟智商無關

            推理 ,可能會麻煩點

            總有出口的

            # re: 愛因斯坦的思考題  回復  更多評論   

            2007-08-10 13:32 by
            德國人養魚

            # re: 愛因斯坦的思考題  回復  更多評論   

            2007-10-21 15:51 by 沒有
            我也做出來了,花了75分鐘.
            利用推理過程算出來的```

            # re: 愛因斯坦的思考題  回復  更多評論   

            2007-10-21 17:39 by Minidx全文檢索
            厲害!

            # re: 愛因斯坦的思考題  回復  更多評論   

            2007-12-25 15:49 by 秦歌
            這樣呀!厲害!

            # re: 愛因斯坦的思考題  回復  更多評論   

            2008-12-17 09:59 by 桀達
            呵呵這到題目高一的時候做過,花了83分鐘

            # re: 愛因斯坦的思考題  回復  更多評論   

            2008-12-28 09:21 by 黃色
            花了83分鐘

            # re: 愛因斯坦的思考題[未登錄]  回復  更多評論   

            2009-05-11 16:45 by 123
            是,跟智商無關

            # re: 愛因斯坦的思考題  回復  更多評論   

            2009-09-08 05:34 by 啦啦啦
            1號房 2號房 3號房 4號房 5號房
            黃色 藍色 紅色 綠色 白色
            挪威 丹麥 英國 德國 瑞典
            礦泉水 茶 牛奶 咖啡 啤酒
            Dun. Ble. Pal. Pri. Blu.
            貓 馬 鳥 魚 狗

            # re: 愛因斯坦的思考題  回復  更多評論   

            2009-12-25 01:24 by 黃色
            黃色 藍色 紅色 綠色 白色

            #  愛因斯坦的思考題  回復  更多評論   

            2011-04-23 16:22 by 祁韻好
            看來我的智商還挺不錯的,才上小四花了40分鐘就作出來了。

            # re: 愛因斯坦的思考題  回復  更多評論   

            2012-06-24 21:59 by
            我用了35分鐘

            # re: 愛因斯坦的思考題  回復  更多評論   

            2012-06-24 21:59 by
            你好自戀
            精品久久久久久国产三级| 亚洲AV日韩AV永久无码久久| 久久国产精品成人免费| 国产69精品久久久久99尤物| 久久免费国产精品| 久久精品无码午夜福利理论片 | 久久亚洲高清观看| 久久久综合香蕉尹人综合网| 无码日韩人妻精品久久蜜桃| 久久最近最新中文字幕大全| 亚洲国产香蕉人人爽成AV片久久 | 亚洲国产精品综合久久一线| 久久精品人妻中文系列| 国产精品成人久久久久久久| 久久精品麻豆日日躁夜夜躁| 中文成人无码精品久久久不卡| 久久精品国产亚洲AV无码偷窥| 久久久久久国产精品美女| 97久久精品午夜一区二区| 久久久午夜精品| 久久久精品日本一区二区三区 | 久久久婷婷五月亚洲97号色| 久久中文精品无码中文字幕| 久久这里只有精品首页| 日韩精品久久久肉伦网站| 久久99国产精品久久99小说| 青青草国产97免久久费观看| 国内精品久久久久久麻豆| 日韩一区二区久久久久久| 亚洲国产精品久久久久网站 | 久久精品亚洲欧美日韩久久| 久久成人精品视频| 99精品久久精品一区二区| 久久久老熟女一区二区三区| 欧美午夜精品久久久久免费视| 久久婷婷五月综合国产尤物app| 亚洲国产婷婷香蕉久久久久久| 青青草国产97免久久费观看| 无码精品久久一区二区三区| 怡红院日本一道日本久久 | 亚洲а∨天堂久久精品9966|