/**
* 约瑟夫环问题,n个数,步长为m,
* 设 f(n) 为最后胜利者的索引,索引从0开始到n-1
*
* f(n) = (f(n-1) + m) % n
* f(1) = 0
*
*
*/
public class Josephus {
public static int go(int[] a, int n, int m){
int last = 0;
for(int i=1; i<n; i++){
last = (last+m)%(i+1);
}
return a[last];
}
/**
* @param args
*/
public static void main(String[] args) {
int[] a = {0,1,2,3,4,5,6,7,8,9};
int x = Josephus.go(a, a.length, 6);
System.out.println(x);
}
}
约瑟夫环
最新推荐文章于 2024-11-14 15:54:34 发布