問題描述:
一群猴子,編號是 1,2,3 ...m,這群猴子(m 個)按照 1-m 的順序圍坐一圈。從第 1 只開始數,每數到第 n 個,該猴子就要離開此圈,這樣依次下來,直到圈中只剩下最後乙隻猴子,則該猴子為大王。輸入 m 和 n,輸出為大王的猴子是幾號。
提示 1:(1)鍊錶解法:可以用乙個迴圈的單鏈表來表示這一群猴子。表示結點的結構體中有兩個成員:乙個儲存猴子的編號,乙個為指向下乙個人的指標,編號為 m 的結點再指向編號為 1的結點,以此構成環形的鏈。當數到第 n 個時,該結點被刪除,繼續數,直到只有乙個結點。(2)使用結構陣列來表示迴圈鏈:結構體中設乙個成員表示對應的猴子是否已經被淘汰。從第乙個人未被淘汰的數起,每數到 n 時,將結構中的標記改為 0,表示這只猴子已被淘汰。當數到陣列中第 m個元素後,重新從第乙個數起,這樣迴圈計數直到有 m-1 被淘汰。
提示 2:該題為電腦科學中的經典問題,很多實際的問題可以抽象到這種模型上來。感興趣的同學請搜尋「約瑟夫問題」。
**:
#include using namespace std;
struct monkey
;void set_numebr(int m);
int king(int n,int m);
monkey *head, *p1,*p2;
int main()
p2->next=head;
}int king(int n,int m)
kings=p1->number;
delete p1;
return kings;
}
執行結果:
專案 4 猴子選大王
all right reserved.檔名稱 test.cpp 完成日期 2016年9月22日 版本號 v1.2.4 問題描述 一群猴子,編號是1,2,3 m,這群猴子 m個 按照1 m的順序圍坐一圈。從第1只開始數,每數到第n個,該猴子就要離開此圈,這樣依次下來,直到圈中只剩下最後乙隻猴子,則該 ...
第4周實踐專案5 猴子選大王
問題及 檔名稱 專案5 猴子選大王.cpp 作 者 劉強 完成日期 2015年9月25日 版 本 號 v1.0 問題描述 一群猴子,編號是1,2,3 m,這群猴子 m個 按照1 m的順序圍坐一圈。從第1只開始數,每數到第n個,該猴子就要離開此圈,這樣依次下來,直到 圈中只剩下最後乙隻猴子,則該猴子為...
第4周實踐專案5 猴子選大王
檔名稱 專案5 猴子選大王.cpp 作 者 孫翰文 完成日期 2015年10月12日 版 本 號 v1.0 問題描述 一群猴子,編號是1,2,3 m,這群猴子 m個 按照1 m的順序圍坐一圈。從第1只開始數,每數到第n個,該猴子就要離開此圈,這樣依次下來,直到 圈中只剩下最後乙隻猴子,則該猴子為大王...