猴子選大王問題

上傳人:郭** 文檔編號:50817295 上傳時(shí)間:2022-01-22 格式:DOCX 頁數(shù):17 大?。?8.06KB
收藏 版權(quán)申訴 舉報(bào) 下載
猴子選大王問題_第1頁
第1頁 / 共17頁
猴子選大王問題_第2頁
第2頁 / 共17頁

本資源只提供2頁預(yù)覽,全部文檔請下載后查看!喜歡就下載吧,查找使用更方便

10 積分

下載資源

資源描述:

《猴子選大王問題》由會員分享,可在線閱讀,更多相關(guān)《猴子選大王問題(17頁珍藏版)》請?jiān)谘b配圖網(wǎng)上搜索。

1、這是17世紀(jì)的法國數(shù)學(xué)家加斯帕在《數(shù)目的游戲問題》中講的一個故事:15個教徒和15個非教徒在深海上遇險(xiǎn),必須將一半的人投入海中,其余的人才能幸免于難,于是想了一個辦法:30個人圍成一圓圈,從第一個人開始依次報(bào)數(shù),每數(shù)到第九個人就將他扔入大海,如 此循環(huán)進(jìn)行直到僅余 15個人為止。問怎樣排法,才能使每次投入大海的都是非教徒。 題分析 算法設(shè) 約瑟夫問題并不難, 但求解的方法很多;題目的變化形式也很多。這里給出一種實(shí)現(xiàn)方 題目中30個人圍成一圈,因而啟發(fā)我們用一個循環(huán)的鏈來表示??梢允褂媒Y(jié)構(gòu)數(shù)組來 構(gòu)成一個循環(huán)鏈。結(jié)構(gòu)中有兩個成員,其一為指向下一個人的指針,以構(gòu)成環(huán)形的

2、鏈; 其二 /、* 為該人是否被扔下海的標(biāo)記,為1表示還在船上。從第一個人開始對還未扔下海的人進(jìn)行 計(jì)數(shù),每數(shù)到 9 時(shí),將結(jié)構(gòu)中的標(biāo)記改為 0,表示該人已被扔下海了。這樣循環(huán)計(jì)數(shù)直到有 這樣循環(huán)計(jì)數(shù)直到有 約瑟夫問題是個有名的問題: N 個人圍成一圈,從第一個開始報(bào)數(shù),第 從第一個開始報(bào)數(shù),第 M 個將被殺掉, 最后剩下一個,其余人都將被殺掉。例如 N=6 , M=5 ,被殺掉的人的序號為 5, 4 , 6 , 2, M ,使得所 有的壞 人在 殺掉 ng int n,m,a [1 01],k,i,j,nu m; -2,

3、 -1, 0, 1, 2, k-2 現(xiàn)在 們把他 號做 假定在圈子里前K個為好人,后K個為壞人,你的任務(wù)是確定這樣的最少 k+1 k+2 >1 >2 k-2 k-1 > n-2 > n-1 變換后就完完全全成為了(n-1)個人報(bào)數(shù)的子問題,假如我們知道這個子問題的解:例 如 x 是最終的勝利者,那么根據(jù)上面這個表把這個 x變回去不剛好就是n個人情況的解 ???!變回去的公式很簡單,相信大家都可以推出來:x'=(x+k)modn 如何知道(n-1)個人報(bào)數(shù)的問題的解?對,只要知道(n-2)個人的解就行了。(n-2)個人的 解呢?當(dāng)然是先求 (

4、n-3)的情況這顯然就是一個倒推問題!好了,思路出來了,下面寫 令 f 表示 i 個人玩游戲報(bào) m 退出最后勝利者的編號,最后的結(jié)果自然是 f[n] >1) (f+m 有了這個公式,我們要做的就是從 我們要做的就是從 1-n順序算出 f的數(shù)值,最后結(jié)果是 f[n]。 因?yàn)閷?shí)際 生活中編 號總是 開始 我們輸出 于是 逐級遞推 保存 f,程 序也 是異 print for f("N (i 2; "); sc anf "% d", n, &m ); i+ +) )%i;

5、 這個算法的時(shí)間復(fù)雜度為 print va wri 一百萬,一千萬的情況不是問題了。 te 而且往往 約瑟夫 n個人排成一圈。從某個人開始,按順時(shí)針方向依次編號。從編號為 ”報(bào)數(shù),報(bào)到 個數(shù)是有限的, 輸入 個正整數(shù) 個正 "T ln( 會成 'T wi O(n),相對于模擬算法已經(jīng)有了很大的提高。算 題1 可見, 倍地 0e1 De nn wi %d s+ 適當(dāng)?shù)剡\(yùn)用數(shù)學(xué)策略,不僅可以讓編程變得簡單, 提高算法執(zhí) scrip 從某個人開始

6、,按順時(shí)針方向依次編號。從編號為 2的人退出圈子。這樣不斷循環(huán)下去,圈子里的人將不斷減少。由于人 n,m等于 行效率 vijios) tion 1的人開始順時(shí)針 此最終會剩下一個人。試問最后剩下的人最開始的編號。 格式 Input For mat n,表示人的個數(shù)。輸入數(shù)據(jù)保證數(shù)字 n不超過 100位。 Output For mat 整數(shù)。它 表示經(jīng)過“ 報(bào)數(shù)后最后 剩下 編號。 例輸 例輸 Sam ple put Sam ple ut put

7、 時(shí)間 Time Limitation 初見這道 我們先拿手來算,可知 有如下規(guī)律:從 素的個 去,再寫過程,又把一些簡單的過程合到主程序中了,所以有點(diǎn)亂,也有點(diǎn)猥瑣。起提供思 能會 想到 數(shù)據(jù)實(shí)在太 大啦??! n分別為 1,2, 3, 4, 6, 7, 8...時(shí)的結(jié)果是1 1,3, 1, 1到下一個 1為一組,每一組中都是從 1開始遞增的奇數(shù),且每組元 且每組元 ,c:= 為某 組的元素

8、個數(shù) ③whilec< c{ an 有了思路,再加上高精度就可以了。 路的作用 為現(xiàn)在 所加 數(shù)} (b:=b*2,c:=b+c){超過目標(biāo) 時(shí)停 止加數(shù)} 到前 算出 組的第 幾個 元素 求出 該元素 我寫的代碼比較猥瑣, 因?yàn)槭窍劝焉厦娴乃悸非眠M(jìn) 還是完全可以 vara,b,c:array[1 105]ofinteger la,lb,lc,i integer trin

9、 p r o c e d u r e i n c c J for fo if c< gi oa ue th fo do b> e n d J p r o c e d u r e d e c c J ifif e n d J

10、 b e g i n fo for i:=105 or ow to do if a>0 to th en j:=i wri rea en a) r la e a =l d e n ln ( h s ( ); g t s ); for i:=la dow nto1 do a:= ord (s[

11、l a+1 -i]) -ord ('0'); b [ 1 ] = 1 ; c [ 1 ] = 1 ; wh i le c xi a o a do b e g i n d o u b l e b ; i n c c ; e n d ; d e c c ; f u a ;

12、 o u t i t ; e n d . [ 編 輯 本 段 ] 約瑟 夫問 題 的另 外 一 個 有 名 的 例 子: [ 編 輯 本 段 ] 猴 子 選 大 王 一 . 問 題 描 述 : 一堆猴子都有編號,編號是1,2,3...m,這群猴子(m)按照1-m的順序圍坐一圈, 從第1開始數(shù),每數(shù)到第N,該猴子就要離開此圈,這樣依次下來,直到圈中

13、只剩下最 后一只猴子,則該猴子為大王。 二.基本要求: (1)輸入數(shù)據(jù):輸入m,nm,n為整數(shù),n

14、 1、 or rin ca a1開始報(bào)數(shù),一圈之后,剩下的人為 (i=2; tf (" Th i+ +) is (s "% %d", ); a( 圈之后,剩下的人為 a1,a2,a4,a5,...a(n-n mod m)% s+ i; ); ), 3-1),a(n-n mod a(n-n 2、若3|n,則最后死的 若nmod3w0Lf(n-[n/3])<=nmod3 若nmod3w0Lf(n-[n/3])>nmod3 mod3),下一輪第一個報(bào)數(shù)的是a(n-nmod 人為新一輪的第F 則最后死的人為新

15、一輪的第 則最后死的人為新一輪的第 3+1) (n-[n/3])個人 n-[n/3]+F(n-[n/3])-(n F(n-[n/3])- nmod3) 3、新一輪第k個人對應(yīng)原來的第3*[(k-1)/2]+(k-1)mod 2+1個人 F(1)=1,F(2)=2,F(3)=2,F(4)=1,F(5)=4,F(xiàn) 當(dāng)f(n-[n/3])<=nmod3 當(dāng)f(n-[n/3])>nmod3 (6)=1, 時(shí)k=n-[n/3]+F(n-[n/3])-(nmod3),F(n)=3*[(k-1)/2]+(k-1)mod 時(shí)k=F(n-[n/3])-(nmod3),F(xiàn)(n)=3*[(

16、k-1)/2]+(k-1)mod2+1 這種算法需要計(jì)算[log(3/2)2009]次這個數(shù)不大于22,可以用筆算了 第二 圈, 殺 死 4 4 6 人, 還 剩 下 8 9 4 人 第三 圈, 殺 死 2 9 8 人, 還 剩 下 5 9 6 人 第四 圈, 殺 死 1 9

17、 8 人, 還 剩 下 3 9 8 人 第五 圈, 殺 死 1 3 2 人, 還 剩 下 2 6 6 人 第六 圈, 殺 死 8 8 人, 還 剩 下 1 7 8 人 第七 圈, 殺 死 5 9 人, 還 剩 下 1 1 9 人 2007,還剩下1340個人, 第八圈 殺死 39人,還剩下 80人 第一圈,將殺死 669 個人,這一圈最后一個被殺死的人是 第九圈 殺死 26 人, 還剩下 54 人 第十圈 殺死 18 人, 還剩 36 人 十一圈 殺死

18、12 人, 還剩 24 人 十二圈 殺死8人 十三圈 殺死5 還 剩 16 人 還剩 11 人 十四圈 殺死3 人 ,還 剩8人 十五 圈,殺死2 人 ,還 剩6人 F(1)=1,F(2)=2,F(3)=2 F(4)=1,F(5)=4, F(6)=1, 然后逆推回 F(8)=7 F(11)=7 F(16)=8 f(24)=11 f(36)=16 f(54)=23 f(80)=31 f(119)=43 f(178)=62 f(266)=89 f(398)=130 F(596)=191F(894)=286F(1340)=425F(2009)=634

展開閱讀全文
溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

相關(guān)資源

更多
正為您匹配相似的精品文檔

相關(guān)搜索

關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號:ICP2024067431-1 川公網(wǎng)安備51140202000466號


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺,本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請立即通知裝配圖網(wǎng),我們立即給予刪除!