介绍:约瑟夫环:有n个人围成一圈,开始报数1,2…m。报道第i个数然后枪毙,问最后剩下的k个人的位置在哪?
/** * 约瑟夫环:有n个人围成一圈,开始报数1,2...m。报道第i个数然后枪毙,问最后剩下的k个人的位置在哪? * 假设n=50,m=3,i=3,k=1 * @author wql * */public class JosephRing { public static int fun() { boolean[] flag = new boolean[50];// 默认是false,我认为false是活着的 int alive = 50; // 还活着的人的数量 int count = 0; // 报数 int i = 0; // 下标 while (alive > 1) { if (!flag[i]) { count++; } if (count == 3) { count = 0; // 重新报数 flag[i] = true; // 枪毙 alive--; } if (i == flag.length - 1) { // 到末尾 i = -1; // 转圈 } i++; } int index = 0; for (int j = 0; j < flag.length; j++) { if (!flag[j]) { index = j; } } return index; }}