約瑟夫問題。

2021-06-03 19:00:38 字數 627 閱讀 4220

約瑟夫問題。有n個人,編號為1,2,…,n,圍成乙個圓圈,按照順時針方向從編號為k的人從1開始報數,報數為m的人出列,他的下乙個人重新開始從1報數,數到m的人出列,一直這樣重複下去,直到所有的人都出列。要求編寫乙個演算法,輸入n、k和m,依次輸出每次出列人的編號。

演算法描述如下:

void josephus(linklist h,int n,int m,int k)

/*在由n個人圍成的圓圈中,從第k個人開始報數,數到m的人出列*/

listnode *p,*q;

int i;

p=h;

for(i=1;iq=p;

p=p->next;

while(p->next!=p)

for(i=1;iq=p;

p=p->next;

q->next=p->next;       /*將p指向的結點刪除,即報數為m的人出列*/

printf("%4d",p->data);

free(p);

p=q->next;                           /*p指向下乙個結點,重新開始報數*/

printf("%4d\n",p->data);

測試**由自己編寫,或參考零基礎學資料結構,機工社,

約瑟夫問題 約瑟夫環

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

約瑟夫問題 約瑟夫環

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

約瑟夫問題

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