趣味演算法(一)Josephus問題

2021-08-31 10:55:48 字數 770 閱讀 9478

josephus問題求解:

設有n個人圍坐乙個圓桌周圍,,現從第s人開始報數,數到第m的人出列,

然後從出列的下乙個重新開始報數,數列的第m個人又出列……如此重複,直

到所有的人全部出列為止。對任意給定的n、s、m,求按出列次序得到的n個

人員的順序表。

分析:對於n個人,每一次出列乙個人,餘下的n-1個人仍然是乙個josephus問題,因此可以使用遞迴的方式,每次出列乙個人,直到餘下最後乙個人。

public class josephus {

/*** @param args

*/public static void main(string args) {

// todo auto-generated method stub

boolean nodes=new boolean[10];

for(int i=0; i執行結果:

nodes is deleted,pos:7

nodes is deleted,pos:4

nodes is deleted,pos:2

nodes is deleted,pos:1

nodes is deleted,pos:3

nodes is deleted,pos:6

nodes is deleted,pos:10

nodes is deleted,pos:5

nodes is deleted,pos:8

the left is 9

演算法 Josephus問題 報數遊戲

問題描述 有n 個人圍成一圈,按順序排號。從第乙個人開始報數 從 1開始 凡報到 5的人退出圈子,問最後留下的是原來第幾號的那位。例如 9個人圍成一圈,1號從第 1開始報數,5號首先退出圈子。接著6號從 1開始重新報數,1號退出圈子。接著2號從 1開始重新報數,7號退出圈子。然後從 8號開始重新報數...

趣味演算法(一)

有一些陣列如 int 這樣的乙個陣列,這個陣列的第乙個必須從0開始,以次 1列出,該陣列內最後乙個數是這個陣列的長度,因此 int,missed number為0 int,missed number為3 int,missed number為1 public class missednumber el...

Josephus 約瑟夫 問題

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