Josephus問題 的迴圈佇列解決方法

2021-10-07 08:31:30 字數 1104 閱讀 1068

題目描述

n個人排成一圈,按順時針方向依次編號1,2,3…n。從編號為1的人開始順時針"一二"報數,報到2的人退出圈子。這樣不斷迴圈下去,圈子裡的人將不斷減少。最終一定會剩下乙個人。試問最後剩下的人的編號。

要求程式模擬題意來實現。

輸入

不超過1000組資料。

每組資料一行,每行乙個正整數,代表人數n。 (1 <= n <= 1000)

輸出

每組輸入資料輸出一行, 僅包含乙個整數,代表最後剩下的人的編號。

樣例輸入72

樣例輸出71

提示

第一組資料出隊順序: 2 4 6 1 5 3

#include

#include

//malooc函式

typedef

struct sqsq;

//這裡的"sq"等價於"struct sq"

sq *

createnode()

node->next=

null

; node->num=0;

return node;

}int

main()

num=n;

sq *root;

root=

createnode()

; sq *top;

root->next=root;

top=root;

sq *c;

for(i=

1;i<=n;i++

) root->next=top->next;

free

(top)

; top=root->next;

//將top指向第乙個編號的位置,並刪掉原先的空間,然後首尾相連

sq *p;

while(1

)printf

("%d\n"

,top->num);}

return0;

}

迴圈鍊錶Josephus問題(c,cpp

問題描述 設有n個人圍坐在乙個圓桌周圍,現從第s個人開始報數,數到第m個的人出列,然後從出列的下乙個人重新開始報數,數到第m個的人又出列,如此反覆直到所有的人出列為止。josephus.c 1 include 2 include 3 typedef struct lnode 4lnode,linkl...

Josephus問題 用迴圈鍊錶解決

1.剛剛學鍊錶,因此這裡特地用迴圈鍊錶解決此問題。2.具體程式如下 joseph環問題 n個人排隊,以m報數,直到只剩1人,輸出此人編號 用迴圈鍊錶解決問題 include includeint n,m int i,k 建立結構體 struct student void main else p1 h...

Josephus 約瑟夫 問題

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