我来我网
https://5come5.cn
 
您尚未 登录  注册 | 菠菜 | 软件站 | 音乐站 | 邮箱1 | 邮箱2 | 风格选择 | 更多 » 
 

本页主题: 一点c语言的东西(爱因斯坦难题的C语言程序设计) 显示签名 | 打印 | 加为IE收藏 | 收藏主题 | 上一主题 | 下一主题

真若水



性别: 保密 状态: 该用户目前不在线
等级: 希望之光
发贴: 1768
威望: 0
浮云: 1035
在线等级:
注册时间: 2007-03-09
最后登陆: 2008-06-28

5come5帮你背单词 [ dolphin /'dolfin/ n. 海豚 ]


一点c语言的东西(爱因斯坦难题的C语言程序设计)

爱因斯坦难题的C语言程序设计
题目是:
1、 在一条街上,有5座房子,喷了5种颜色。
2、 每个房里住着不同国籍的人
3、 每个人喝不同的饮料,抽不同品牌的香烟,养不同的宠物
约束条件:
1、 英国人住红色房子
2、 瑞典人养狗
3、 丹麦人喝茶
4、 绿色房子在白色房子左面
5、 绿色房子主人喝咖啡
6、 抽Pall Mall 香烟的人养鸟
7、 [屏蔽]房子主人抽、Dunhill 香烟
8、 住在中间房子的人喝牛奶
9、 挪威人住第一间房
10、抽Blends香烟的人住在养猫的人隔壁
11、养马的人住抽Dunhill 香烟的人隔壁
12、抽Blue Master的人喝啤酒
13、德国人抽Prince香烟
14、挪威人住蓝色房子隔壁
15、抽Blends香烟的人有一个喝水的邻居

问题是:谁养鱼?

#include<stdio.h>
char*COL[]={NULL,"红","黄","绿","蓝","白"};
char*PAD[]={NULL,"狗","猫","鱼","鸟","马"};
char*DRK[]={NULL,"茶  ","牛奶","咖啡","啤酒","水  "};
char*GUO[]={NULL,"挪威","英国","德国","丹麦","瑞典"};
char*SMK[]={NULL,"Blends","BlueMaster","Dunhill","Pall Mall","Prince"};
struct{ char guojia, color, pads, drink, smoke; } aa[5];
int OK(void)
{
    int i,j;
    for(i=0;i<5;i++)
    if(aa.guojia==2 && aa.color==1)goto next1;
    return 0;
next1:
    for(i=0;i<5;i++)
    if(aa.guojia==5 && aa.pads==1)goto next2;
    return 0;
next2:   
    for(i=0;i<5;i++)
    if(aa.guojia==4 && aa.drink==1)goto next3;
    return 0;
next3:
    for(i=0;i<5;i++)
    if(aa.color==3)goto next3_1;
    return 0;
next3_1:
    for(j=i+1;j<5;j++)
    if(aa[j].color==5)goto next4;
    return 0;
next4:
    for(i=0;i<5;i++)
    if(aa.color==3 && aa.drink==3)goto next5;
    return 0;
next5:
    for(i=0;i<5;i++)
    if(aa.smoke==4 && aa.pads==4)goto next6;
    return 0;
next6:
    for(i=0;i<5;i++)
    if(aa.color==2 && aa.smoke==3)goto next7;
    return 0;
next7:
    for(i=0;i<5;i++)
    if(aa.guojia==3 && aa.smoke==5)goto next10;
    return 0;
next10:
    for(i=0;i<5;i++)
    if(aa.smoke==2 && aa.drink==4)goto next11;
    return 0;
next11:
    for(i=0;i<5;i++)
    if(aa.smoke==3)goto next12_1;
next12_1:
    if(i==0){if(aa[1].pads==5)goto next13;}
    else if(i==4){if(aa[3].pads==5)goto next13;}
    else if(aa[i-1].pads==5||aa[i+1].pads==5)goto next13;
    return 0;
next13:
    for(i=0;i<5;i++)
    if(aa.smoke==1)goto next13_1;
next13_1:
    if(i==0){if(aa[1].pads==2)goto next14;}
    else if(i==4){if(aa[3].pads==2)goto next14;}
    else if(aa[i-1].pads==2||aa[i+1].pads==2)goto next14;
    return 0;
next14:
    for(i=0;i<5;i++)
    if(aa.smoke==1)goto next14_1;
next14_1:
    if(i==0){if(aa[1].drink==5)goto next15;}
    else if(i==4){if(aa[3].drink==5)goto next15;}
    else if(aa[i-1].drink==5||aa[i+1].drink==5)goto next15;
    return 0;
next15:
    return 1;
}

char color[4]={1,2,3,5};
char drink[4]={1,3,4,5};
char guojia[4]={2,3,4,5};
char smoke[]={1,2,3,4,5};
char pads[5]={1,2,3,4,5};

int rot(char a[],int n)
{  int i,j,k,t;
    for(k=n-1;k>0;k--)
      if(a[k-1]<a[k])break;
    if(k==0)
    { for(i=0,j=n-1;i<j;i++,j--)
      {char t=a;
          a=a[j];
          a[j]=t;
      }
      return 0;
    }
    t=a[k-1];i=k;
    for(j=k+1;j<n;j++)
      if(t<a[j]&&a[j]<a)i=j;
    a[k-1]=a;a=t;
    for(i=k;i<n-1;i++)
      for(j=k;j<n-1+k-i;j++)
        if(a[j]>a[j+1])
        {  t=a[j];
          a[j]=a[j+1];
          a[j+1]=t;
        }
    return 1;
}

int main()
{  int i,j,k,ans=0;
    int i1,i2,i3,i4,i5;
    aa[1].color=4;
    aa[2].drink=2;
    aa[0].guojia=1;
    for(i1=0;i1<24;i1++){
        aa[0].color=color[0];
        aa[2].color=color[1];
        aa[3].color=color[2];
        aa[4].color=color[3];
        rot(color,4);
    for(i2=0;i2<24;i2++){
        aa[0].drink=drink[0];
        aa[1].drink=drink[1];
        aa[3].drink=drink[2];
        aa[4].drink=drink[3];
        rot(drink,4);
    for(i3=0;i3<24;i3++){
        aa[1].guojia=guojia[0];
        aa[2].guojia=guojia[1];
        aa[3].guojia=guojia[2];
        aa[4].guojia=guojia[3];
        rot(guojia,4);
    for(i4=0;i4<120;i4++){
        for(i=0;i<5;i++)
        aa.smoke=smoke;
        rot(smoke,5);
    for(i5=0;i5<120;i5++){
        for(j=0;j<5;j++)
        aa[j].pads=pads[j];
        rot(pads,5);
        if(OK()){
        printf("---------------------第%d种解---------------------\n",++ans);
        for(k=0;k<5;k++)
        printf("第%d户: %s人 %s房子 养%s 喝%s 抽%s\n",k+1,GUO[aa[k].guojia],
        COL[aa[k].color],PAD[aa[k].pads],DRK[aa[k].drink],SMK[aa[k].smoke]);
    }}}}}}
    return 0;
}


[ 此帖被真若水在2008-04-29 22:06重新编辑 ]
顶端 Posted: 2008-04-29 18:47 | [楼 主]
空中战机



性别: 帅哥 状态: 该用户目前不在线
等级: 人见人爱
发贴: 2398
威望: 0
浮云: 1701
在线等级:
注册时间: 2007-01-03
最后登陆: 2010-12-29

5come5帮你背单词 [ grey /grei/ n. & a. 灰色的(grey=gray) ]


不知道哦 应该有的把  自己可以找人组队赛
顶端 Posted: 2008-04-29 18:51 | [1 楼]
真若水



性别: 保密 状态: 该用户目前不在线
等级: 希望之光
发贴: 1768
威望: 0
浮云: 1035
在线等级:
注册时间: 2007-03-09
最后登陆: 2008-06-28

5come5帮你背单词 [ cowboy /'kauboi/ n. 懦夫;a. 胆小的 ]


现在不好找了,今天都是报名的最后一天,再组队没时间了!!
顶端 Posted: 2008-04-29 18:52 | [2 楼]
星坟



性别: 帅哥 状态: 该用户目前不在线
等级: 希望之光
家族: 格格乐心
发贴: 1558
威望: 0
浮云: 310
在线等级:
注册时间: 2006-09-10
最后登陆: 2013-02-21

5come5帮你背单词 [ acre /'eikə/ n. 英亩 ]


上面的程序有为题啊  编译通不过啊
顶端 Posted: 2008-05-01 19:08 | [3 楼]
我来我网·5come5 Forum » 程序员之家

Total 0.012032(s) query 7, Time now is:04-27 13:41, Gzip enabled
Powered by PHPWind v5.3, Localized by 5come5 Tech Team, 黔ICP备16009856号