鹿死谁手

古代有一个皇帝,命令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;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值