IBM經典面試題

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

發佈了27 篇原創文章 · 獲贊 0 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章