- package com.yuxi.day0924;
- import java.util.ArrayList;
- public class Test {
- /**
- * 需求: 有100个人围成一个圈,从1开始报数,报到14的这个人就要退出。
- * 然后其他人重新开始,从1报数,到14退出。问:最后剩下的是100人中的第几个人?
- *
- */
- public static void main(String[] args) {
- // TODO Auto-generated method stub
- //建立一个集合分别把握1-100的数字存入
- ArrayList<Integer> al =new ArrayList<Integer>();
- for(int i=0;i<100;i++)
- {
- al.add(i+1);
- }
- method(al);
- System.out.println(al.get(0));
- }
- public static void method(ArrayList<Integer> arr)
- {
- //报的数字开始值为1
- int number=1;
- while(true)
- {
- //确定集合中至少有一元素
- if(arr.size()>1)
- {
- //循环遍历当number等入14的时候,删除集合相对应的为元素
- for(int i=0;i<arr.size();i++,number++)
- {
- //当报到14的数就删除集合对应的元素
- if(number==14)
- {
- //对number重新置0
- number%=14;
- arr.remove(i);
- //删除后要使集合指向减1
- i--;
- }
- }
- }
- //当最集合中只有一个元素的时候就是最后留下的那个人
- else break;
- }
- }
- }
复制代码
|
|