import java.util.ArrayList;
import java.util.List;
public class JosephusProblem2 {
public static void main(String[] args) {
//lis: 1 2 3 4 5 6 7 8
int[] arr = new int[8];
for (int i = 0; i < 8; i++) {
System.out.print(i+1+" ");
arr[i]=i+1;
}
System.out.println();
play(2, 2, arr);
}
/**
*
* @param n 第几个开始报数
* @param k 报数报到多少
* @param lis 参加集合
*/
public static void play(int n ,int k,int[] arr){
if(arr==null ||arr.length==0|| n<=0 || n>arr.length){
System.out.println("链表有误,请重新校验");
return;
}
int m = 1;
boolean flag = true;
List<Integer> newLis = new ArrayList<Integer>();
while(flag){
if(newLis.size()==1){
System.out.print(newLis.get(0)+" ");
break;
}
newLis.removeAll(newLis);
for (int i = 0; i < arr.length; i++) {
int g = arr[i];
if(g==0){
continue;
}else{
newLis.add(g);
}
if(m==(n+k-1)){
System.out.print(g+" ");
arr[i] = 0;
n=0; //第一次循环后 步长从当前算起
m=0;
continue;
}
m++;
}
}
}
}