古代有一个皇帝,命令A、B、C、D、E、F、G、H的八员大将陪同他外出打猎。经过一番追逐,有一员大将的一支箭射中了一只鹿,是哪一员大将射中的,开始谁也不清楚。这时候,皇帝叫大家先不要去看箭上刻写的姓名,而要大家先猜猜究竟是谁射中的。八员大将众说纷纭。
A说:“或者是H将军射中的,或者是F将军射中的。”
B说:“鹿肯定是我射中的啦。”
C说:“我可以断定是G将军射中的。”
D说:“怎么说也不可能是B将军射中的!”
E说:“A将军猜错了。”
F说:“不会是我射中的,也不是H将军射中的。”
G说:“绝对不是C将军射中的。”
H说:“我同意A将军的观点。”
猜完之后,皇帝命令把鹿身上的箭拨出来验看,证实八员大将中有n个人猜对了。问:鹿是谁射死的?
#include <iostream>
#include <stdlib.h>
void judeg(int &x)
{
int m,count=0,sum = 0;
char ch;
for(int i=0;i<8;i++)
{
m = 'A' + i;
//将所有事件转化确定的数字,如果几个成立,sum就等于几
sum =(m=='H' || m=='F')+(m=='B')+(m=='G')+(m!='B')+(m!='H'&&m!='F')+(m!='F'&&m!='H')+(m!='C')+(m=='H' || m=='F');
if(sum == x)
{
count++;
ch = m;
}
}
if(count == 1)
std::cout<<ch<<std::endl;
else
std::cout<<"NONE"<<std::endl;
}
int main(void)
{
int x;
std::cin>>x;
judeg(x);
system("pause");
return 0;
}
最为关键的是将事件转化为我们可以确定的数字;
把每个事件成立即为1,不成立为0;