演算法 約瑟夫環

2021-09-26 23:01:26 字數 621 閱讀 7154

已知n個人 ( 以編號1,2,3…n分別表示 ) 圍坐在一張圓桌周圍:

使用 list 來模擬環結構,不被淘汰則將其加入到 list 尾部,淘汰的直接移除。需注意,以編號 k 為第乙個報數的人,需要調整其在報數正式開啟前到 list 的頭部。

/**

* @param n 人的總數

* @param k 開始報數的序號,1 <= k <= n

* @param m 出列時的報數(可以大於n)

*/public

void

josephring

(int n,

int k,

int m)

for(

int j =

0; j < k-

1; j++

)while

(list.

size()

>1)

list.

remove(0

);//報數 m 淘汰,直接移除

}//列印最後留下的序號

system.out.

println

(list.

get(0)

);}

約瑟夫環演算法

約瑟夫環是乙個數學的應用問題 已知n個人 以編號1,2,3.n分別表示 圍坐在一張圓桌周圍。從編號為k的人開始報數,數到m的那個人出列 他的下乙個人又從1開始報數,數到m的那個人又出列 依此規律重複下去,直到圓桌周圍的人全部出列。2b求解 private void myjosf int teamle...

演算法設計 約瑟夫環

本科系列課程參見 軟體學院那些課 約瑟夫 joeph 問題的一種描述是 編號為1,2,n的n個人按順時針方向圍坐一圈,每人持有乙個密碼 正整數 一開始任選乙個正整數作為報數上限值m,從第乙個人開始按順時針方向自1開始順序報數,報到m時停止報數。報m的人出列,將他的密碼作為新的m值,從他在順時針方向上...

約瑟夫環的O n 演算法

問題描述 已知n個人 以編號1,2,3.n分別表示 圍坐在一張圓桌周圍。從編號為1的人開始報數,數到m的那個人出列 他的下乙個人又從1開始報數,數到m的那個人又出列 依此規律重複下去,直到圓桌周圍的人全部出列,求最後乙個出列人的編號。為了討論方便,先把問題稍微改變一下,並不影響原意 問題描述 n個人...