課程主頁在
課程資源在
雲學堂「賀老師課堂」同步展示,使用的帳號請到課程主頁中檢視。
【專案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 ...