- /*
- 有100个人围成一个圈,从1开始报数,报到14的这个人就要退出。
- 然后其他人重新开始,从1报数,到14退出。问:最后剩下的是100人中的第几个人?*/
- import java.util.ArrayList;
- import java.util.Iterator;
- class DemoLength
- {
- public static void main(String[] args)
- {
- ArrayList<Integer> arr = new ArrayList<Integer>();//创建一个存活的人的名单
- for(int i=1;i<=100;i++)
- {
- arr.add(i);//给名单上的人取名字
- }
- show(arr);//game开始
-
- }
- private final static int kill=14;//第十四个人干掉
- private static int count=0;//计数自增变量
- public static void show(ArrayList<Integer> arr)
- {
- ArrayList<Integer> buf = new ArrayList<Integer>();//收集将要被干掉的元素,死亡名单
- while(arr.size()>1)//如果集合大于1,继续循环
- {
- for(int i=0;i<arr.size();i++)//循环当前集合
- {
- count++;//自增,开始数数
- if(count%kill==0)//为14的倍数被干掉
- {
- buf.add(arr.get(i));//将要被干掉的人加入死亡名单
- }
- }
- arr.removeAll(buf);//在存活的人中干掉死亡名单上的人。
- buf.clear();//清空死亡名单
- }
- System.out.println(arr);//输出最后存活的人
-
-
- }
- }
复制代码 |