• <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
            你好自戀
            久久er国产精品免费观看2| 色综合久久夜色精品国产| 精品人妻久久久久久888| 精品熟女少妇av免费久久| 久久亚洲欧美日本精品| 久久免费观看视频| 18禁黄久久久AAA片| 嫩草伊人久久精品少妇AV| 亚洲精品国产成人99久久| 久久综合九色综合久99| 久久成人国产精品| 四虎影视久久久免费观看| 国产成人精品免费久久久久| 久久精品国产色蜜蜜麻豆| 久久99久久99精品免视看动漫| 久久成人精品| 亚洲成色999久久网站| 亚洲精品国产字幕久久不卡| Xx性欧美肥妇精品久久久久久 | 亚洲AV无一区二区三区久久| 久久亚洲国产中v天仙www| 国产精品亚洲综合久久| 久久99精品久久久久久秒播| 久久成人国产精品| 久久久久久亚洲AV无码专区| 久久人人添人人爽添人人片牛牛| 99久久精品免费| 青青草原综合久久| AV无码久久久久不卡蜜桃 | 亚洲一区二区三区日本久久九| 久久天天躁狠狠躁夜夜不卡| 青青草原综合久久大伊人导航| 久久国产精品成人免费| 狠狠干狠狠久久| 99久久成人国产精品免费| 国内精品久久久人妻中文字幕| 中文无码久久精品| 无码国内精品久久人妻| 欧美精品久久久久久久自慰| 久久夜色精品国产网站| 久久久精品国产sm调教网站|