/*
约瑟夫环
100个人编号环座,从1号开始轮流从1开始自增报数,报数者为3者被杀死,下一个人从1开始重新数数,循环至只剩1个人为止,问剩下的这个人的标号。
*/
package com.Test;
import java.util.ArrayList;
import java.util.Iterator;
public class Main {
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<>();
for (int i = 0; i < 100; i++) {
list.add(i + 1 + "");
}
int count = 1; //计数器
while (list.size() != 1) { //最后活下来的人数
Iterator<String> iterator = list.iterator();
while (iterator.hasNext()) {
iterator.next();
if (count == 3) { //逢3删除置0
iterator.remove();
count = 0;
}
count++;
}
}
System.out.print("活下来的人的编号是");
for (String string : list) {
System.out.print(string + " ");
}
}
}
03-10