約瑟夫問題

2021-07-09 13:31:01 字數 1110 閱讀 4173

chengyaogen.blog.chinaunix.net

設編號分別為:1,2,...,n的n個人圍坐一圈。約定序號為k(1 <= k < = n)的人從1開始計數,數到m的那個人出列,他的下一位又從1開始計數,數到m的那個人又出列,依次類推,直到所有人出列為止。

設n=8,k=3,m=4時,如圖所示:

出列為:6,2,7,4,3,5,1,8

演算法思路:用乙個不帶頭結點的迴圈鍊錶來處理josephu問題:先構成乙個有n個結點的單迴圈鍊錶,然後從第k結點起從1計數,計到m時,對應結點從鍊錶中刪除;然後再從被刪除結點的下乙個結點起又從1開始計數....,直到所有結點都列出時演算法結束。

**如下:

#include

#include

typedef struct _node_

listnode;

listnode* get_node(

int data)

int insert_data(listnode *

*p,listnode *q)

else

return 0;

}listnode *create_loop(

int m)

return pmove;

}int delete_data(listnode *

*p,listnode *q)

int main(

)while

(q !

= p)

printf(

"%d "

,q->data)

;delete_data(

&p,q)

;q = p-

>

next;}

printf(

"%d\n"

,p->data)

;return 0;

}

執行結果:

0給主人留下些什麼吧!~~

約瑟夫問題 約瑟夫環

約瑟夫 問題 有時也稱為約瑟夫斯置換,是乙個出現在電腦科學和數學中的問題。在計算機程式設計的演算法中,類似問題又稱為約瑟夫環。又稱 丟手絹問題 據說著名猶太歷史學家 josephus有過以下的故事 在羅馬人占領喬塔帕特後,39 個猶太人與josephus及他的朋友躲到乙個洞中,39個猶太人決定寧願死...

約瑟夫問題 約瑟夫環

約瑟夫問題 有時也稱為約瑟夫斯置換,是乙個出現在電腦科學和數學中的問題。在計算機程式設計的演算法中,類似問題又稱為約瑟夫環。又稱 丟手絹問題 據說著名猶太歷史學家 josephus有過以下的故事 在羅馬人占領喬塔帕特後,39 個猶太人與josephus及他的朋友躲到乙個洞中,39個猶太人決定寧願死也...

約瑟夫問題

這是17世紀的法國數學家加斯帕在 數目的遊戲問題 中講的乙個故事 15個教徒和15 個非教徒在深海上遇險,必須將一半的人投入海中,其餘的人才能倖免於難,於是想了乙個辦法 30個人圍成一圓圈,從第乙個人開始依次報數,每數到第九個人就將他扔入大海,如此迴圈進行直到僅餘15個人為止。問怎樣排法,才能使每次...