村子里有50个人,每人有一条狗,在这50条狗中有病狗(这种病不传染),于是人们要找出病狗。
每个人可以观察其他49条狗,以判断他们是否生病,(如果有病一定能看出来),只有自己的狗不能看,观察后得到的结果不得交流,也不能通知病狗的主人。主人一旦推算出自己家的狗是病狗就是枪毙自己的狗(发现后必须在一天内枪毙),而且每个人只有权利枪毙自己的狗,没有权利打死其他人的狗。
第一天大家全看完了,但枪没有响,到了第三天传来一阵枪声,问村里共有几条病狗,如何推算出来的?
请根据题意 编写一段程序完成此试题的解答!
int iDog; //病狗数量
int nDog; //狗的数量
int pDog; //人数;等于狗的数量
bool HaveLook=false;
for (int i=1;i
{
iDog=i; //推数的病狗数量
for (int j=1;j<=pDog;j++) //每人
{
int LookiDog=LookDog(); //观察狗,返回看到的病狗数量
if (lookiDog
{
killDog(pDog[j]);
HaveLook=true;
}
}
if (HaveLook) return iDog;
}