Josephus約瑟夫環問題

2021-03-31 16:31:21 字數 760 閱讀 2647

求解josephus問題:設有n個數構成乙個環鏈,現從第k個數開始數數,數到m的那個數被彈出,然後從該數的下乙個數重新開始數數,數到m的那個數又被彈出,如此重複,直到所有的數均被彈出為止。輸出這些數彈出的序列。

#include

#include

#define maxsize 100

typedef struct node node, *linklist;

linklist creat(int m, int n, int mm)

l->no=0;

l->m=0;

r->next=l;

return l;

}void josephus(linklist l, int m, int n)

q=p->next;

if (q->no==0) q=q->next;

m=q->m;

printf("%4d",q->no);

p->next=q->next;

free(q);

nn--;

p=p->next;}}

main()

*/;int ch=0, c;

linklist l;

/* m=20;n=7;

only for test*/

printf("輸入m:");scanf("%d",&m);

printf("輸入n:");scanf("%d",&n);

printf("輸入密碼:");

for (i=0;i

Josephus問題(約瑟夫環)

描述 有n個人坐在一圈做遊戲,給他們編號為1到n,現從1號人開始傳遞乙份烤肉,傳遞m次停下,將拿著烤肉的人從圈中退出,圈縮小,將烤肉給退出的人後面的人,然後開始繼續傳遞m次停下,又將拿著烤肉的人從圈中退出,圈縮小,依次類推,直到剩下乙個人,那個人就可以品嚐烤肉了,作程式,看看最後的獲勝者是誰?分析 ...

Josephus 約瑟夫 問題

問題描述 已知n個人 以編號1,2,3.n分別表示 圍坐在一張圓桌周圍。從編號為1的人開始報數,數到m的那個人出列 他的下乙個人又從1開始報數,數到m的那個人又出列 依此規律重複下去,直到剩下最後乙個人。程式的意圖是求出最後留下的人的編號。c 實現 include include include u...

約瑟夫(Josephus)問題

一群小孩圍成一圈,任意假定乙個數n,從第乙個小孩起,順時針方向數,每數到第m個小孩時,該小孩便離開。小孩不斷離開,圈子不斷縮小。最後剩下的乙個小孩便是勝者。求勝者的編號?函式名稱 josephus 作 成 者 erick.wang 作成日期 2016 07 19 返 回 值 void 參 數 m,n...