• <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>

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

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

            每個(gè)房間里分別住著一個(gè)不同國(guó)籍的人;

            每個(gè)人都在喝一種特定品牌的飲料,抽一特定品牌的煙,養(yǎng)一特定的寵物;

            沒(méi)有任意兩個(gè)人在抽相同品牌的香煙,或喝相同品牌的飲料,或養(yǎng)相同的寵物。

              問(wèn)題:誰(shuí)在養(yǎng)魚作為寵物?

              愛(ài)因斯坦給出如下線索:


            英國(guó)人住在紅色的房子里;

            瑞典人養(yǎng)狗作為寵物;

            丹麥人喝茶;

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

            綠房子的主人喝咖啡;

            抽Pall Mall牌香煙的人養(yǎng)鳥;

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

            住在中間那個(gè)房子里的人喝牛奶;

            挪威人住在第一個(gè)房子里面;

            抽Blends牌香煙的人和養(yǎng)貓的人相鄰;

            養(yǎng)馬的人和抽Dunhill牌香煙的人相鄰;

            抽BlueMaster牌香煙的人喝啤酒;

            德國(guó)人抽Prince牌香煙;

            挪威人和住在藍(lán)房子的人相鄰;

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

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

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

            using namespace std;

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

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

             for (int e=1; e<5; e++) //表示英國(guó)人的房子序號(hào)
             for (int r=1; r<5; r++)//表示瑞典人的房子序號(hào)
             for (int d=1; d<5; d++)//表示丹麥人的房子序號(hào)
             for (int g=0; g<5; g++)//表示綠房子的序號(hào)
             for (int p=0; p<5; p++)//表示抽Pall Mall牌香煙的人的房子序號(hào)
             for (int y=0; y<5; y++)//表示黃色房子的序號(hào)
             for (int b=0; b<5; b++)//表示喝啤酒人的房子序號(hào)
             for (int h=0; h<5; h++)//表示養(yǎng)馬的人的房子序號(hào)
             for (int cat=0; cat<5; cat++)//表示養(yǎng)貓的人的房子序號(hào)
             {
              int Germany = 10 - 0 - e - r - d; //表示德國(guó)人的房子序號(hào),德國(guó)人抽Prince牌香煙;
              int Blends = 10 - p - y - b - Germany;//表示抽Blends牌香煙的人的房子序號(hào)
              int white = 10 - 1 - e - g - y; //表示白房子的序號(hào)
              int water = 10 - 2 - d - g - b; //表示喝礦泉水的人的房子序號(hào)
              int fish = 10 - r - p - h - cat;//表示養(yǎng)魚的人的房子序號(hào)
              
              bool A1 = (e!=1); //英國(guó)人住在紅色的房子里;根據(jù)房子和國(guó)家判斷
              bool A2 = (r!=e); //瑞典人養(yǎng)狗作為寵物;根據(jù)國(guó)家和寵物判斷
              bool A3 = (d!=e && d!=r && d!=2);//丹麥人喝茶;根據(jù)國(guó)家和飲料判斷
              bool A4 = (g!=1 && g!=2 && g!=e && g!=d);//綠房子的主人喝咖啡;根據(jù)顏色和飲料判斷
              bool A5 = (p!=r); //抽Pall Mall牌香煙的人養(yǎng)鳥;根據(jù)香煙和寵物判斷
              bool A6 = (y!=e && y!=1 && y!=g && y!=p);//黃色房子里的人抽Dunhill牌香煙;根據(jù)顏色和香煙判斷
              bool A7 = (b!=2 && b!=d && b!=g && b!=p && b!=y);//抽BlueMaster牌香煙的人喝啤酒;根據(jù)香煙和飲料判斷
              bool A8 = (h!=r && h!=p && (h==y+1 || h==y-1));//養(yǎng)馬的人和抽Dunhill牌香煙的人相鄰,根據(jù)香煙和寵物判斷
              bool A9 = (white == g + 1); //綠房子緊挨著白房子,在白房子的左邊;
              bool A0 = (cat==Blends-1 || cat==Blends+1);//Blends牌香煙的人和養(yǎng)貓的人相鄰;
              bool A11 = (water==Blends-1 || water==Blends+1);//抽Blends牌香煙的人和喝礦泉水的人相鄰
              
              if (A1 && A2 && A3 && A4 && A5 && A6 && A7 && A8 && A9 && A0 && A11)
              {//把滿足條件的序號(hào)填入結(jié)構(gòu)數(shù)組
               House[e].nation = "英國(guó)";
               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 = "德國(guó)";
               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("愛(ài)因斯坦的思考題.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 夢(mèng)想飛揚(yáng) 閱讀(3085) 評(píng)論(18)  編輯 收藏 引用

            Feedback

            # re: 愛(ài)因斯坦的思考題  回復(fù)  更多評(píng)論   

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

            我的印象里,這似乎是個(gè)無(wú)解的題目,因?yàn)槿鄙贄l件,還少了一個(gè)人,你的答案也證明了這一點(diǎn),有兩個(gè)人養(yǎng)魚

            # re: 愛(ài)因斯坦的思考題  回復(fù)  更多評(píng)論   

            2006-12-08 22:45 by 夢(mèng)想飛揚(yáng)
            呵呵,我開始確實(shí)大意了
            但如果第一次碰到合適的答案就輸出的話,也可以找到一個(gè)答案的.
            為了不誤人子弟,代碼我已經(jīng)改過(guò)來(lái)了.

            # re: 愛(ài)因斯坦的思考題  回復(fù)  更多評(píng)論   

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

            # re: 愛(ài)因斯坦的思考題  回復(fù)  更多評(píng)論   

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


            # re: 愛(ài)因斯坦的思考題  回復(fù)  更多評(píng)論   

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

            # re: 愛(ài)因斯坦的思考題  回復(fù)  更多評(píng)論   

            2007-06-18 09:25 by 倔強(qiáng)超人
            恩 ,跟智商無(wú)關(guān)

            推理 ,可能會(huì)麻煩點(diǎn)

            總有出口的

            # re: 愛(ài)因斯坦的思考題  回復(fù)  更多評(píng)論   

            2007-08-10 13:32 by
            德國(guó)人養(yǎng)魚

            # re: 愛(ài)因斯坦的思考題  回復(fù)  更多評(píng)論   

            2007-10-21 15:51 by 沒(méi)有
            我也做出來(lái)了,花了75分鐘.
            利用推理過(guò)程算出來(lái)的```

            # re: 愛(ài)因斯坦的思考題  回復(fù)  更多評(píng)論   

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

            # re: 愛(ài)因斯坦的思考題  回復(fù)  更多評(píng)論   

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

            # re: 愛(ài)因斯坦的思考題  回復(fù)  更多評(píng)論   

            2008-12-17 09:59 by 桀達(dá)
            呵呵這到題目高一的時(shí)候做過(guò),花了83分鐘

            # re: 愛(ài)因斯坦的思考題  回復(fù)  更多評(píng)論   

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

            # re: 愛(ài)因斯坦的思考題[未登錄](méi)  回復(fù)  更多評(píng)論   

            2009-05-11 16:45 by 123
            是,跟智商無(wú)關(guān)

            # re: 愛(ài)因斯坦的思考題  回復(fù)  更多評(píng)論   

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

            # re: 愛(ài)因斯坦的思考題  回復(fù)  更多評(píng)論   

            2009-12-25 01:24 by 黃色
            黃色 藍(lán)色 紅色 綠色 白色

            #  愛(ài)因斯坦的思考題  回復(fù)  更多評(píng)論   

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

            # re: 愛(ài)因斯坦的思考題  回復(fù)  更多評(píng)論   

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

            # re: 愛(ài)因斯坦的思考題  回復(fù)  更多評(píng)論   

            2012-06-24 21:59 by
            你好自戀

            只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。
            網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問(wèn)   Chat2DB   管理


            亚洲va久久久噜噜噜久久天堂| 国产精品女同久久久久电影院| 99久久国产热无码精品免费久久久久 | 久久久久国产日韩精品网站| 蜜桃麻豆www久久国产精品| 久久婷婷人人澡人人爽人人爱| 久久精品亚洲日本波多野结衣| 久久精品国产精品国产精品污| 亚洲&#228;v永久无码精品天堂久久| 久久影院久久香蕉国产线看观看| 欧美精品国产综合久久| 久久国产免费观看精品| 四虎亚洲国产成人久久精品| 亚洲AV日韩精品久久久久久 | 伊人久久大香线蕉综合Av| 88久久精品无码一区二区毛片| 伊人久久大香线蕉成人| 亚洲成色999久久网站| 影音先锋女人AV鲁色资源网久久 | 久久精品国产亚洲AV高清热| 久久无码AV中文出轨人妻| 久久国产精品成人免费| 色偷偷久久一区二区三区| 亚洲国产香蕉人人爽成AV片久久| 久久精品嫩草影院| 国内精品久久久人妻中文字幕| 亚洲国产精品无码久久青草| 精品久久久久久无码中文野结衣| 91精品国产高清久久久久久io| 久久无码AV一区二区三区| 久久久久一本毛久久久| 精品久久久无码中文字幕天天| 久久久老熟女一区二区三区| 亚洲va久久久噜噜噜久久男同| 18岁日韩内射颜射午夜久久成人| 亚洲国产视频久久| 午夜精品久久久久久| 久久久精品久久久久影院| 久久99热这里只频精品6| 深夜久久AAAAA级毛片免费看| 午夜肉伦伦影院久久精品免费看国产一区二区三区 |