n个人围成一圈,从第一个人开始依次从1到m循环报数,当报到m的时候此人出圈,然后从下一个人开始重新报数,直到圈中只剩一人为止.打印出最后一个人的原始编号和出圈序列
import java.util.ArrayList;
import java.util.List;
public class TestCircle {
public static void to(int total, int number) {
List<Integer> list = new ArrayList<Integer>(total);
for (int i = 1; i <= total; i++) {
list.add(i);
}
int begin = -1;
while (total > 0) {
begin += number;
System.out.println(list.remove(begin % total));
begin = (begin % total) - 1;
total--;
}
}
/**
* @param args
*/
public static void main(String[] args) {
TestCircle.to(10, 3);
}
}输出
2
4
1
5
3