这题用枚举法错在哪了?
古代有一个皇帝,命令赵、钱、孙、李、周、吴、郑、王八员大将陪同他外出打猎。经过一番追逐,有一员大将的一支箭射中了一只鹿,开始谁也不清楚是哪一员大将射中的。这时候,皇帝叫大家先不要去看箭上刻写的姓氏,而要大家先猜猜究竟是谁射中的。八员大将众说纷纭。赵:“或者是王将军射中的,或者是吴将军射中的。”钱:“如果这支箭正好射中鹿的头,那么鹿是我射中的。”孙:“我可以断定是郑将军射中的。”李:“即使这支箭正好射中鹿的头,也不可能是钱将军射中的。”周:“赵将军猜错了。”吴:“不会是我射中的,也不是王将军射中的。”郑:“不是孙将军射中的。”王:“赵将军没有猜错。”猜完之后,皇帝命令赵将军把鹿身上的箭拔出来验看,证实八员大将中有三人猜对了。请问,你知道鹿究竟是谁射死的吗?#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;
}