• <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 夢想飛揚 閱讀(3085) 評論(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
            你好自戀
            精品久久久久久久久免费影院| 久久久久成人精品无码中文字幕 | 伊人久久国产免费观看视频| 国内精品久久久久久久久| 精品久久久久一区二区三区 | 久久国产高清字幕中文| 国产呻吟久久久久久久92| 久久国产成人精品国产成人亚洲| 伊人久久大香线蕉精品| 久久综合鬼色88久久精品综合自在自线噜噜| 久久精品三级视频| 久久久无码精品亚洲日韩蜜臀浪潮 | 国产午夜电影久久| 午夜精品久久久久久久无码| 少妇久久久久久久久久| 久久高清一级毛片| 久久精品中文闷骚内射| 人妻系列无码专区久久五月天| 日本欧美久久久久免费播放网| 狠狠色综合久久久久尤物| 久久久久久久97| 亚洲人AV永久一区二区三区久久| 国产午夜精品理论片久久影视| 亚洲中文字幕久久精品无码APP| 狠狠色丁香久久综合婷婷| 一级a性色生活片久久无| 国产精品美女久久久免费| 99久久99久久精品国产片果冻| 国产成人无码精品久久久免费| 国内精品综合久久久40p| 日韩精品无码久久一区二区三| 久久综合九色综合精品| 亚洲精品无码专区久久久| 亚洲精品久久久www| 久久伊人中文无码| 久久996热精品xxxx| 久久美女网站免费| 亚洲欧美精品伊人久久| 香港aa三级久久三级| 久久精品无码一区二区三区| 99久久国产综合精品麻豆|