村子裏有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;
}