第四周專案4 猴子選大王

2021-07-23 01:49:18 字數 1551 閱讀 5137

問題描述及**:

[cpp] view plain copy

1. #ifndef btree_h_included

2. #define btree_h_included

3. /*

4. *煙台大學計控學院

5. *作 者:朱建豪

6. *完成日期:2023年9月23日

7. *問題描述:一群猴子,編號是1,2,3 …m,這群猴子(m個)按照1-m的順序圍坐一圈。從第1只開始數,每數到第n個,該猴子就要離開此圈,這樣依次下來,直到圈中只剩下最後乙隻猴子,則該猴子為大王。輸入m和n,輸出為大王的猴子是幾號。

8.

10. (1)鍊錶解法:可以用乙個迴圈單鏈表來表示這一群猴子。表示結點的結構體中有兩個成員:乙個儲存猴子的編號,乙個為指向下乙個人的指標,編號為m的結點再指向編號為1的結點,以此構成環形的鏈。當數到第n個時,該結點被刪除,繼續數,直到只有乙個結點。

11. (2)使用結構陣列來表示迴圈鏈:結構體中設乙個成員表示對應的猴子是否已經被淘汰。從第乙個人未被淘汰的數起,每數到n時,將結構中的標記改為0,表示這只猴子已被淘汰。當數到陣列中第m個元素後,重新從第乙個數起,這樣迴圈計數直到有m-1被淘汰。

12. (3)該問題為電腦科學中的經典問題,很多實際的問題可以抽象到這種模型上來。感興趣的同學請搜尋「約瑟夫問題」。

13.

14. */

15. #endif // btree_h_included

[cpp] view plain copy

1. #include 2. using namespace std;

3. struct monkey

4. ;

8.

9. int main()

10.

18. else

19.

31. p2->next=head; //最後乙隻再指向第一只,成了乙個圓圈

32.

33. //下面要開始數了

34. p1=head;

35. for(i=1; inext; //圍成圈的,可能再開始從第一隻數,如果還未被淘汰的話

40.

41. //找到了,

42. p2=p1->next; //p2將被刪除

43. //cout<<"第"next; //p2就這樣被「架空了」

45. p1=p2->next; //下一輪數數的新起點

46. delete p2; //將不在鍊錶中的結點放棄掉

47. }

48. king=p1->num;

49. delete p1;

50. }

51. cout<

第四周專案4 猴子選大王

問題描述 檔名稱 monkey choose king.cpp 完成日期 2015年10月22日 版本號 vc 6.0 問題描述 猴子選大王 輸入描述 猴子總數m,排除第n個猴子 程式輸出 剩餘的最後乙個猴子 程式 include using namespace std struct monkey ...

第四周 專案4 猴子選大王

問題及 檔名稱 ccc.cpp 作 者 車佳穎 完成日期 2016年9月23日 問題描述 一群猴子,編號是1,2,3.m,這群猴子 m個 按照1 m的順序圍坐一圈。從第1只開始數,每數到第n個,該猴子就要離開此圈,這樣依次下來,直到圈中只剩下最後乙隻猴子,則該猴子為大王。輸入m和n,輸出為大王的猴子...

第四周 專案4 猴子選大王

檔名稱 jiang.cpp 作 者 姜孝龍 完成日期 2016年9月23日 版 本 號 v1.0 問題描述 一群猴子,編號是1,2,3 m,這群猴子 m個 按照1 m的順序圍坐一圈。從第1只開始數,每數到第n個,該猴子就要離開此圈,這樣依次下來,直到 圈中只剩下最後乙隻猴子,則該猴子為大王。輸入m和...