无意中看到这个约瑟夫环问题问题,觉得挺有意思的,然后用Java编程求解一下。
题目要求:
n个人围成一圈,从第一个人开始报数,数到K的人出局,然后从下一个人接着报数,直到最后一个人,求最后一个人的编号,或者计算出出圈顺序。
解法一:
public class Josephus {
/*
* "约瑟夫环"问题的解决方法1
* 共N个人,从第S个人开始报数,报数1—M
* 这里初始化的13个,人从第3个开始报数,数到5的出局
* 最后运行结果:7 12 4 10 3 11 6 2 1 5 9 13 8
*/
public static void main(String args[]) {
final int N=13,S=3,M=5;
int i = S-1, k = N, g = 1, j;
int a[] = new int[N