第四周專案4 猴子選大王

2021-07-23 01:44:16 字數 999 閱讀 8048

問題及**:

/*

*煙台大學計算機與控制工程學院

*版本:v1.0.1

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

*/#include using namespace std;

struct monkey

;int main()

else

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

//下面要開始數了

p1=head;

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

//找到了,

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

//cout

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

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

}king=p1->num;

delete p1;

}cout<

執行結果:

知識點總結:

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

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

第四周專案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和...