/**
* 功能Josephus问题解答
*
* @param total总数
* @param gap间隔数
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
ArrayList<Integer> list = new ArrayList<Integer>();
int total = 20;
int gap = 13;
// 编号
for (int i = 1; i < 21; i++) {
list.add(i);
}
fun(list, gap);
}
public static void fun(List<Integer> list, int gap) {
int index = 0;// 计算器用于记住数了多少个
while (list.size() > 1) {
for (int i = 0; i < list.size(); i++) {
index++;
// 当数到gap时该元素被移除
if (index == gap) {
System.out.println("第" + list.get(i) + "个被移除");
list.remove(i);
// 因为第i个被删除 掉了所以第i+1个上来顶了他的位置即变成了第i个,
// 此时相当于已经数了一个所以index=1
index = 1;
}
}
}
System.out.println("最后剩下" + list.get(0));
}