有100个人围成一个圈,从1开始报数,报到14的这个人就要退出。
然后其他人重新开始,从1报数,到14退出。问:最后剩下的是100人中的第几个人?
public class Test10 {
public static void main(String[] args) {
//定义个带泛型的list集合
List<Integer> list = new ArrayList<Integer>();
//给集合添加元素
for (int i = 1; i <= 100; i++) {
list.add(i);
}
int last = lastOne(list);
System.out.println("最后剩下第" + last + "个人");
}
public static int lastOne(List<Integer> list) {
//定义一个计数器
int count = 0;
//进行运算
while (list.size() > 1) {
count++;
//将int封装成Integer类型
Integer mun = (Integer) list.remove(0);
//进行判断,只要是不等于14就进行添加
if (count != 14)
list.add(mun);
//如果计数器等于14,也就是到14个人了,就将计数器归零
if (count == 14) {
//System.out.println("移除第" + mun + "个人");
count = 0;
}
}
return list.get(0);
}
} |
|