已知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個人...