2014秋C 第19周 專案2參考 猴子選大王

2021-06-28 02:31:57 字數 1183 閱讀 1721

課程主頁在

課程資源在

雲學堂「賀老師課堂」同步展示,使用的帳號請到課程主頁中檢視。 

【專案2-猴子選大王】

一群猴子,編號是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

;int main()

else

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

//下面要開始數了

p1=head;

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

//找到了,

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

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

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

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

}king=p1->num;

delete p1;

}cout<

***************==== 迂者 賀利堅 csdn部落格專欄***************==

|== it學子成長指導專欄

專欄文章的分類目錄(不定期更新) ==|

賀利堅課程教學鏈結(分課程年級) ==|

|== 我寫的書——《逆襲大學——傳給it學子的正能量》    ==|

***** 為it菜鳥起飛鋪跑道,和學生一起享受快樂和激情的大學 *****

2014秋C 第19周 專案 單鏈表 列舉

課程主頁在 課程資源在 雲學堂 賀老師課堂 同步展示,使用的帳號請到課程主頁中檢視。專案1 動態鍊錶體驗 下面是乙個建立動態鍊錶的程式。閱讀程式,在草稿紙上畫出鍊錶建立的過程,藉此學會如何建立鍊錶。然後按要求改造程式。include using namespace std struct node n...

2014秋C 第17周 專案2參考 引用作形參

課程主頁在 課程資源在 雲學堂 賀老師課堂 同步展示,使用的帳號請到課程主頁中檢視。專案2 引用作形參 設計乙個程式,輸入3個整數,將其按從大到小的順序輸出,要求 1 排序功能通過函式實現,3個整數用3個變數,不必定義陣列 2 寫出兩個版本的函式,乙個採用傳位址值的方法,另乙個採用引用型別作引數 在...

2014秋C 第13周專案1參考 陣列大折騰

課程主頁在 課程資源在 雲學堂 賀老師課堂 同步展示,使用的帳號請到課程主頁中檢視。專案1 陣列大折騰 1 建立乙個有20個元素的整型陣列,通過初始化,為陣列中的前10個元素賦初值,然後通過鍵盤輸入後10個元素的值,從前往後 從第0個到第19個 輸出陣列中元素的值,每5個元素換一行。include ...