本帖最后由 zfan 于 2014-5-2 04:24 编辑
- import java.util.*;
- public class Test02 {
- /**
- * @param args
- */
- public static void main(String[] args) {
- // TODO Auto-generated method stub
- int num = 6; //这里定义初始的人数;
-
- ArrayList n = new ArrayList();
- for(int i=1;i<=num;i++)
- n.add(i); //这里对数组中的元素从1开始编号;
- for(int i=0,flag=0;n.size()>1;i++){
- flag++;
- if(flag==3){
- n.remove(i); //当flag累加到3时,移除当前元素,并重置flag;
- num-=1;
- i-=1; //由于清除元素后所有元素向前挪动了一位,因此在此处将指针前置一位;
- flag = 0;
- }
- if(i==num-1) //当指针遍历至角标最大值(为初始人数减1)时,重置指针;
- i = -1; //重置指针,将指针的最大值转换为角标最小值零的前置一位(为 -1),保证循环遍历;
- }
- System.out.println(n.get(0));
- }
- }
复制代码 |