全部版块 我的主页
论坛 提问 悬赏 求职 新闻 读书 功能一区 经管百科 爱问频道
4654 21
2010-01-14
大家可以看看这道逻辑题,可以发表下自己的意见,共同讨论下

五个人来自不同地方,住不同房子,养不同动物,吸不同牌子香烟,喝不同饮料,喜欢不同食物。根据以下线索确定谁是养猫的人?
1,红房子在蓝房子的右边,白房子的左边(不一定紧邻)
2,黄房子的主人来自香港,而且他的房子不在最左边。

3,爱吃比萨饼的人住在爱喝矿泉水的人的隔壁。

4,来自北京的人爱喝茅台,住在来自上海的人的隔壁。

5,吸希尔顿香烟的人住在养马的人?右边隔壁。

6,爱喝啤酒的人也爱吃鸡。

7,绿房子的人养狗。

8,爱吃面条的人住在养蛇的人的隔壁。

9,来自天津的人的邻居(紧邻)一个爱吃牛肉,另一个来自成都

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2010-1-14 15:27:16
thanks for sharing this
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2010-1-14 15:46:15
成都人!答案就是一部电影!
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2010-1-14 20:38:34
啥?我不晓得喃,说哈 3# 畅神天下
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2010-1-14 21:01:59
/**原题为:五个房子,五种颜色,分别住着五个国籍的人,每人养的宠物不同,喝的饮料不同,抽的烟不同
*条件:1、英国人住红色房子;2、瑞典人养狗;3、丹麦人喝茶;4、绿色房子在白色房子左边;
      *5、绿色房子主人和咖啡;6、抽Pail Mail香烟的人养鸟;7、黄色房子主人抽Dunhill香烟;
      *8、住在中间房子的人和牛奶;9、挪威人住第一间房子;10、抽Blends香烟的人住在养猫的隔壁;
      *11、养马的人住抽Dunhill香烟的隔壁;12、抽Blue Master的人喝啤酒;13、德国人抽Prince香烟;
      *14、挪威人住蓝色房子隔壁;15、抽Blends香烟的人有一个喝水的邻居。问谁养鱼?
                        *解题的关键在于如何将这个问题化成数学问题:将五个房子分别编上序号(1、2、3、4、5),
      然后求出颜色、国籍、宠物、香烟、饮料的各个具体数值*/
我曾用java语言编了个程序来解这道题
原程序如下:
import java.awt.event.*;
import javax.swing.*;
import java.awt.*;

public class EnstenFrame extends JFrame{
        /**各个国籍的变量,求出它们的数值,就可以知道哪个房子住着那国人*/
                protected static int nEnglish,nSweden,nDanmark,nGermany;
                /**颜色变量,作用如上*/
                protected static int cred,cgreen,cwhite,cyellow;
                /**宠物变量,作用如上*/
                protected static int pdog,pbird,pcat,phorse;
                /**饮料变量,作用如上*/
                protected static int dtea,dcoffee,dbeer,dwater;
                /**香烟变量,作用如上*/
                protected static int spail,sdunhill,sblends,sblue,sprince;
                /**数组a[5][5]用来容纳答案*/
                protected static String a[][] = new String[5][5];
                protected JTextArea[][] jt ;
                JPanel[] p ;
                JButton jb ;
                public EnstenFrame(){
                        super("爱因斯坦迷题");
                        try{
                                UIManager.setLookAndFeel(
                                        UIManager.getSystemLookAndFeelClassName());
                        }catch(Exception e){System.err.println("找不到此种外观:"+e);}
                        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                        jt = new JTextArea[5][5];
                        p = new JPanel[2];
                        p[0] = new JPanel();
                        p[1] = new JPanel();
                        for(int i = 0;i < 5;i++)
                                for(int j = 0;j < 5; j++){
                                        jt[i][j] = new JTextArea();
                                        jt[i][j].setEditable(false);
                                }
                        jb = new JButton("解题");
                        jb.addActionListener(new ActionListener(){
                                public void actionPerformed(ActionEvent e){
                                        solution();
                                }
                        });
                        p[0].setLayout(new GridLayout(5,5,5,8));
                        for(int i = 0 ; i < 5; i++)
                                for (int j = 0; j < 5;j++)
                                        p[0].add(jt[i][j]);
                        p[1].add(jb);
                        setLayout(new BorderLayout());
                        add(p[0],BorderLayout.CENTER);
                        add(p[1],BorderLayout.SOUTH);
                        setSize(400,300);
                        setResizable(false);
                        Dimension screen = getToolkit().getScreenSize();
                        setLocation((screen.width - getSize().width)/2,
                                (screen.height - getSize().height)/2);
                        setAlwaysOnTop(true);
                        setVisible(true);
                }
        public static void main(String[] args){
                System.out.println("原题为:五个房子,五种颜色,分别住着五个国籍的人,每人养的宠物不同,喝的饮料不同,抽的烟不同");
                System.out.println("条件为:1.英国人住红色房子\n"
                        +"2.瑞典人养狗\n"+"3.丹麦人喝茶\n"+"4.绿色房子在白色房子左边\n"
                        +"5.绿色房子主人喝咖啡\n"+"6.抽Pail Mail香烟的人养鸟\n"+"7.黄色房子主人抽Dunhill香烟\n"
                        +"8.住在中间房子的人喝牛奶\n"+"9.挪威人住第一间房子\n"
                        +"10.抽Blends香烟的人住在养猫的隔壁\n"+"11.养马的人住抽Dunhill香烟的隔壁\n"
                        +"12.抽Blue Master的人喝啤酒\n"+"13.德国人抽Prince香烟\n"
                        +"14.挪威人住蓝色房子隔壁\n"+"15.抽Blends香烟的人有一个喝水的邻居\n"
                        +"问谁养鱼?");
                EnstenFrame n =new EnstenFrame();
       
        }
        public void solution(){
                int n = 0;
                int m = 0;
                        for(int i=0;i<5;i++){
                        for(int j=0;j<5;j++)
                                a[i][j]="no";
                }
                for (nEnglish=3;nEnglish <6;nEnglish++){ //根据条件,挪威人住1号房,2号房为蓝色,住红色房子的英国人只能是住3号以后的房子
                        cred=nEnglish;
                        for(nSweden=2;nSweden<6;nSweden++){
                                if (nSweden == nEnglish)//排除挪威人和英国人的住房
                                        continue;
                                else {
                                        pdog = nSweden;
                                        for (nDanmark=2;nDanmark<6;nDanmark++){
                                                if (nDanmark == nEnglish || nDanmark == nSweden )//排除挪威人、英国人、瑞典人的住房
                                                        continue;
                                                else{
                                                        dtea=nDanmark;
                                                        for(nGermany=2;nGermany<6;nGermany++){
                                                if(nGermany==nEnglish || nGermany== nSweden || nGermany== nDanmark)//排除挪威人、英国人、瑞典人、丹麦人的住房
                                                        continue;
                                                else{
                                                        sprince = nGermany;
                                                        for(cgreen=1;cgreen < 5;cgreen++)
                                                        /*排除红色、蓝色*/
                                                        if(cgreen == cred || cgreen + 1 == cred || cgreen ==2 || cgreen + 1 == 2 || cgreen ==3)
                                                                continue;
                                                        else{
                                                                cwhite = cgreen + 1;
                                                                dcoffee = cgreen;
                                                                for (cyellow = 1 ;cyellow < 6; cyellow++)
                                                                if(cyellow == cred || cyellow == cgreen || cyellow == cwhite || cyellow ==2 || cyellow == sprince)
                                                                        continue;
                                                                else{
                                                                        sdunhill=cyellow;
                                                                        for(pbird = 1;pbird <6 ; pbird++){
                                                                                if(pbird == pdog || pbird == sprince || pbird ==sdunhill )
                                                                                        continue;
                                                                                else{
                                                                                        spail = pbird;
                                                                                        for(pcat = 1;pcat <6;pcat++){
                                                                                                if (pcat == pdog || pcat == pbird  )
                                                                                                        continue;
                                                                                                else{
                                                                                                        for(phorse =1;phorse <6;phorse++){
                                                                                                                if(phorse == pdog || phorse == pbird || phorse == pcat)
                                                                                                                        continue;
                                                                                                                else{
                                                                                                                        for(dbeer =1;dbeer <6;dbeer++){
                                                                                                                                if (dbeer == 3 || dbeer ==dtea || dbeer == dcoffee || dbeer == sprince || dbeer == sdunhill || dbeer == spail )
                                                                                                                                        continue;
                                                                                                                                else{
                                                                                                                                        sblue = dbeer;
                                                                                                                                        for (dwater = 1; dwater < 6;dwater++){
                                                                                                                                                if (dwater == dtea || dwater == dcoffee || dwater == dbeer || dwater==3)
                                                                                                                                                        continue;
                                                                                                                                                else{
                                                                                                                                                        for(sblends=1;sblends <6;sblends++){
                                                                                                                                                        if (sblends == sprince || sblends == spail || sblends == sdunhill || sblends == sblue)
                                                                                                                                                                continue;
                                                                                                                                                        else{
                                                                                                                                                                if ((sblends - pcat)*(sblends - pcat) == 1 && (sdunhill - phorse)*(sdunhill - phorse) == 1 && (sblends - dwater)*(sblends - dwater) == 1)
                                                                                                                                                                   {
                                                                                                                                                                           a[0][0]="挪威";a[0][nEnglish-1]="英国";a[0][nSweden-1]="瑞典";a[0][nDanmark-1]="丹麦";a[0][nGermany-1]="德国";
                                                                                                                                                                           a[1][cred-1]="红色";a[1][cgreen-1]="绿色";a[1][cwhite-1]="白色";a[1][cyellow-1]="黄色";a[1][1]="蓝色";
                                                                                                                                                                           a[2][2]="牛奶";a[2][dtea-1]="茶";a[2][dcoffee-1]="咖啡";a[2][dwater-1]="水";a[2][dbeer-1]="啤酒";
                                                                                                                                                                           a[3][pdog-1]="狗";a[3][pbird-1]="鸟";a[3][pcat-1]="猫";a[3][phorse-1]="马";
                                                                                                                                                                           a[4][sprince-1]="Prince";a[4][spail-1]="Pail Mail";a[4][sdunhill-1]="Dunhill";a[4][sblue-1]="Blue Master";a[4][sblends-1]="Blends";
                                                                                                                                                                           for(int i=0;i<5;i++){
                                                                                                                                                                                   if (a[3][i].equals("no"))
                                                                                                                                                                                           a[3][i]="鱼★";
                                                                                                                                                                           }
                                                                                                                                                                           for(int i=0;i<5;i++)
                                                                                                                                                                                   for(int j=0;j<5;j++){
                                                                                                                                                                                           jt[i][j].setText(a[i][j]);
                                                                                                                                                                                           if (jt[i][j].getText().equals("鱼★")){
                                                                                                                                                                                                   n = i;
                                                                                                                                                                                                   m = j;
                                                                                                                                                                                           }
                                                                                                                                                                           }
                                                                                                                                                                           jt[n][m].setToolTipText("答案是丰富多彩的!");
                                                                                                                                                                           JOptionPane.showMessageDialog(this,"答案是:"+a[0][m]+"人养鱼!");
                                                                                                                                                                           /*System.out.print("nE=" + nEnglish + "nS=" + nSweden
                                                                                                                                                                           + "nD=" + nDanmark + "nG=" + nGermany  );
                                                                                                                                                                  System.out.println();
                                                                                                                                                                  System.out.print("cr=" + cred + "cg=" + cgreen + "cw=" + cwhite + "cy=" + cyellow);
                                                                                                                                                                  System.out.println();
                                                                                                                                                                  System.out.print("dt=" + dtea + "dc=" + dcoffee + "dw=" + dwater + "db=" +dbeer);
                                                                                                                                                                  System.out.println();
                                                                                                                                                                  System.out.print("pd=" + pdog + "pb=" + pbird + "pc=" + pcat + "ph=" + phorse);
                                                                                                                                                                  System.out.println();
                                                                                                                                                                  System.out.print("sprince=" +sprince + "spail=" +spail+"sdunhill=" +sdunhill+"sblue="+sblue+"sblends=" + sblends);
                                                                                                                                                                  System.out.println();*/
                                                                                                                                                                  }
                                                                                                                                                        }
                                                                                                                                                        }
                                                                                                                                                }
                                                                                                                                        }
                                                                                                                                }
                                                                                                                        }
                                                                                                                }
                                                                                                        }
                                                                                                }
                                                                                        }
                                                                                }
                                                                        }
                                                                }
                                                        }
                                                }
                                                        }
                                                }
                                        }
                                }
                        }
                }
        }
}
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2010-1-14 21:06:07
那位编程的大哥太牛了。。。。。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群