14 12
发新话题
打印

爱因斯坦的思考题

源代码 仅供参考:

      #include<stdlib.h>
      #include <stdio.h>
      #include<string.h>
      int main(void)
      {
       FILE *fp;
       char data[5][40]={"国家","房子","宠物","饮料","香烟"};
       char country[6][40]={" "," "," "," "," "," "};
       char house[6][40]={" "," "," "," "," "," "};
       char pet[6][40]={" "," "," "," "," "," "};
       char drink[6][40]={" "," "," "," "," "," "};
       char smoke[6][40]={" "," "," "," "," "," "};
       int i, j, k, l, m, n, o, p, q, r, s, t;
       bool A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12;

       if ((fp=fopen("sdfg.txt","w+")) == NULL)
        {
          fprintf(stderr,"\nError opening file \n");
         exit(1);
        }  
       strcpy(country[1],"挪威");//挪威人住在第一个房子里面
       strcpy(house[2],"蓝色");
       strcpy(drink[3],"牛奶");// 住在中间那个房子里的人喝牛奶

       for(i=1; i<6; i++)
        for(j=1; j<6; j++)
         for(k=1; k<5; k++)
          for(l=1; l<6; l++)
           for(m=1; m<6; m++)
            for(n=1; n<6; n++)
             for(o=1; o<6; o++)
             {  
              A1 = (i!=1 && i!=2 );//英国人住在红色的房子里;根据房子和国家判断
              A2 = (j!=1 && j!=i ); //瑞典人养狗作为宠物;根据国家和宠物判断
               A3 = (k>3 && k!=i);//绿房子的主人喝咖啡;绿房子紧挨着白房子,在白房子的左边;根据房子和国家判断  
              A4 = (l!=1 && l!=3 && l!=i && l!=j && l!=k); //丹麦人喝茶;根据国家和饮料判断
              A5 = (m!=j);//抽Pall Mall牌香烟的人养鸟;根据香烟和宠物判断
              A6 = (n!=2 && n!=i && n!=k && n!=m);
      //黄色房子里的人抽Dunhill牌香烟;根据房子和香烟判断  
              A7 = (o!=3 && o!=k && o!=l && o!= m && o!=n
      );//抽BlueMaster牌香烟的人和啤酒;根据香烟和饮料判断
              if(A1&&A2&&A3&&A4&&A5&&A6&&A7)
              {
               p = 15-1-i-j-l;  //德国人抽Prince牌香烟 ,根据国家判断
               q = 15-m-n-o-p; //抽Blends牌香烟的人和养猫的人相邻,根据香烟判断
               A8 = (p!=1 && p!=i && p!=j && p!=l && p!=m && p!=n &&
      p!=o);//德国人抽Prince牌香烟 ,
               A9 = (q!=m && q!=n && q!=o && q!=p); //抽Blends牌香烟的人和养猫的人相邻,
               if(A8&&A9)
               {
                if(q>1 && (q-1)!=j && (q-1)!=m)//抽Blends牌香烟的人和养猫的人相邻,根据宠物判断
                {
                 strcpy(pet[q-1], "猫");
                 if(n>1 && (n-1)!=j && (n-1)!=m)
                 {
                  strcpy(pet[n-1], "马");
                  t = 15-(q-1)-(n-1)-j-m;
                  strcpy(pet[t], "鱼");
                 }
                 else if(n<5 && (n+1)!=j && (n+1)!=m)
                 {
                  strcpy(pet[n+1], "马");
                  t = 15-(q-1)-(n+1)-j-m;
                  strcpy(pet[t], "鱼");
                 }
                }
                else if(q<5  && (q+1)!=j && (q+1)!=m)
                {
                 strcpy(pet[q+1], "猫");
                 if(n>1 && (n-1)!=j && (n-1)!=m)
                 {
                  strcpy(pet[n-1], "马");
                  t = 15-(q+1)-(n-1)-j-m;
                  strcpy(pet[t], "鱼");
                 }
                else if(n<5 && (n+1)!=j && (n+1)!=m)
                 {
                  strcpy(pet[n+1], "马");
                  t = 15-(q+1)-(n+1)-j-m;
                  strcpy(pet[t], "鱼");
                 }
                }
                //抽Blends牌香烟的人和喝矿泉水的人相邻,根据饮料判断
                if(q>1 && (q-1)!=3 && (q-1)!=k && (q-1)!=l && (q-1)!=o)
                  strcpy(drink[q-1],"矿泉水");
                else if(q<5 && (q+1)!=3 && (q+1)!=k && (q+1)!=l && (q+1)!=o)
                  strcpy(drink[q+1],"矿泉水");
                  //养马的人和抽Dunhill牌香烟的人相邻,根据宠物判断
               //抽Blends牌香烟的人和养猫的人相邻,根据宠物判断
               if((q>1 && (q-1)!=j && (q-1)!=m) ||(q<5  && (q+1)!=j &&
(q+1)!=m))
               //抽Blends牌香烟的人和喝矿泉水的人相邻,根据饮料判断
                if((q>1 && (q-1)!=3 && (q-1)!=k && (q-1)!=l && (q-1)!=o) ||(q<5
      && (q+1)!=3 && (q+1)!=k && (q+1)!=l && (q+1)!=o))  
                   //养马的人和抽Dunhill牌香烟的人相邻,根据宠物判断  
                   if((n>1 && (n-1)!=j && (n-1)!=m) || (n<5 && (n+1)!=j &&
      (n+1)!=m))
                 {  strcpy(country,"英国");//英国人住在红色的房子里;
                   strcpy(house,"红色");
                   strcpy(country[j],"瑞典"); //瑞典人养狗作为宠物;
                   strcpy(pet[j], "狗");
                  strcpy(house[k],"绿色");//绿房子紧挨着白房子,在白房子的左边;                     
        
                    strcpy(house[k+1],"白色") ;
                  strcpy(drink[k],"咖啡"); //绿房子的主人喝咖啡;
                  strcpy(country[l],"丹麦");//丹麦人喝茶;
                  strcpy(drink[l],"茶");
                   strcpy(smoke[m],"PallMall");//抽Pall Mall牌香烟的人养鸟;
                   strcpy(pet[m],"鸟");
                   strcpy(house[n],"黄色"); //黄色房子里的人抽Dunhill牌香烟
                   strcpy(smoke[n],"Dunhill");  
                   strcpy(smoke[o],"BlueMaster");//抽BlueMaster牌香烟的人和啤酒
                   strcpy(drink[o],"啤酒");
                  strcpy(country[p],"德国");//德国人抽Prince牌香烟
                   strcpy(smoke[p],"Prince");
                   strcpy(smoke[q],"Blends"); //抽Blends牌香烟的人和养猫的人相邻,  
                  
                  fprintf(fp,"\n");
                  fprintf(stdout, "\n");
                  for(r=0; r<5; r++)  
                  {
                   fprintf(stdout, "%15s", data[r]);
                   fprintf(fp,"%15s", data[r]);
                  }
                  fprintf(fp,"\n");
                  fprintf(stdout, "\n");
                  for(s=1; s<6; s++)
                  {
                   fprintf(stdout, "%15s", country[s]);
                   fprintf(stdout, "%15s", house[s]);
                   fprintf(stdout, "%15s", pet[s]);
                   fprintf(stdout, "%15s", drink[s]);
                   fprintf(stdout, "%15s", smoke[s]);
                   fprintf(stdout, "\n");
                   fprintf(fp,"%15s", country[s]);
                   fprintf(fp,"%15s", house[s]);
                   fprintf(fp,"%15s", pet[s]);
                   fprintf(fp,"%15s", drink[s]);
                   fprintf(fp,"%15s", smoke[s]);
                   fprintf(fp,"\n");
                   fflush(fp);
                  }
                 }
                }
              }
             }
       fclose(fp);
        system("pause");
        return 0;
      }


[ 本帖最后由 mathbox 于 2008-6-27 15:16 编辑 ]
开源:人之所需,时之所趋,共进之模式!
http://mathbox.lupaworld.com

TOP

我自己推的是德国人。

TOP

引用:
原帖由 mathbox 于 2008-6-27 15:15 发表
源代码 仅供参考:

      #include<stdlib.h>
      #include <stdio.h>
      #include<string.h>
      int main(void)
      {
       FILE *fp;
       char data={"国家&q ...
这是计算机推出来的,不是人推出来的。

TOP

国籍:挪威人 丹麦人  英国人  德国人  瑞典人
颜色:黄色    蓝色     红色     绿色     白色
饮料:矿泉水 茶        牛奶     咖啡     啤酒
烟:   Dunhill Blends   PallMall  Prince  BlueMaster
宠物:猫       马        鸟        鱼        狗

我的结果是德国人养鱼做宠物。

大家看看对不对啊

TOP

 14 12
发新话题