| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 494 人关注过本帖
标题:这题用枚举法错在哪了?
只看楼主 加入收藏
lxc5460
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2007-11-24
收藏
 问题点数:0 回复次数:0 
这题用枚举法错在哪了?
古代有一个皇帝,命令赵、钱、孙、李、周、吴、郑、王八员大将陪同他外出打猎。经过一番追逐,有一员大将的一支箭射中了一只鹿,开始谁也不清楚是哪一员大将射中的。这时候,皇帝叫大家先不要去看箭上刻写的姓氏,而要大家先猜猜究竟是谁射中的。八员大将众说纷纭。赵:“或者是王将军射中的,或者是吴将军射中的。”钱:“如果这支箭正好射中鹿的头,那么鹿是我射中的。”孙:“我可以断定是郑将军射中的。”李:“即使这支箭正好射中鹿的头,也不可能是钱将军射中的。”周:“赵将军猜错了。”吴:“不会是我射中的,也不是王将军射中的。”郑:“不是孙将军射中的。”王:“赵将军没有猜错。”猜完之后,皇帝命令赵将军把鹿身上的箭拔出来验看,证实八员大将中有三人猜对了。请问,你知道鹿究竟是谁射死的吗?

#include <iostream>
using namespace std;
int main()
{
 int A,B,C,D,E,F,G,H,head;
 int c1,c2,c3,c4,c5,c6,c7,c8;
 char info[2][9]={"他没说对","他说对了"};
 for(A=0;A<=1;A++)
  for(B=0;B<=1;B++)
   for(C=0;C<=1;C++)
    for(D=0;D<=1;D++)
     for(E=0;E<=1;E++)
      for(F=0;F<=1;F++)
       for(G=0;G<=1;G++)
        for(H=0;H<=1;H++)
         for(head=0;head<=1;head++)
         {
          c1=H||F;
             if(head==1)
           c2=B;
          c3=G;         
          c4=!B;
          c5=!(H||F);
          c6=!F&&!H;
          c7=!C;
          c8=H||F;         
         
          if(c1+c2+c3+c4+c5+c6+c7+c8==3)
          {
           cout<<"A:"<<info[A]<<endl;
           cout<<"B:"<<info[B]<<endl;
           cout<<"C:"<<info[C]<<endl;
           cout<<"D:"<<info[D]<<endl;
           cout<<"E:"<<info[E]<<endl;
           cout<<"F:"<<info[F]<<endl;
           cout<<"G:"<<info[G]<<endl;
           cout<<"H:"<<info[H]<<endl;
          }
         }
         
 return 0;
}
搜索更多相关主题的帖子: 枚举法 将军 大将 皇帝 姓氏 
2007-11-24 16:48
快速回复:这题用枚举法错在哪了?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.020981 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved