这不是个josephus的问题嘛?你可以去google 上搜一下
很简单 的
用个数组  找不到话 我给写一下

解决方案 »

  1.   

    import java.util.*;
    public class A
    {
    public static void main(String [] args)
    {
    int a[]={3,7,6,12,1,5,-1,9};
    ArrayList<Integer>ai=new ArrayList<Integer>();
    for(int i=0;i<a.length;i++)
    ai.add(a[i]);
    int num=2;
    int index=0;
    while(ai.size()>0)
    {

    System.out.println(ai.remove(index));
    if(ai.size()==0)break;
    index=(index+num)%ai.size();
    }
    }
    }
      

  2.   

    想起了数据结构里“猴子选大王”的问题……^_^
    public class Test
    {
        /*
         *@param arr    //数组
         *@param n        //隔几个输出一个
         */
        static void print(int[] arr, int n)
        {
            int num = arr.length ;    //数组内还有几个数没被输出
            int count = n - 1 ;            //当前报数到几了
            int i = -1 ;
            
            while(num>0)
            {
                //如果当前位置的数没被输出则报数
                if(arr[++i] != 0) ++count ;
                
                //找到了报n的家伙
                if(count >= n)
                {
                    //输出这个数并将它设置为最大数
                    //表示其被输出了,不用再报数了
                    System.out.print(arr[i] + "  ") ;
                    arr[i] = 0 ;
                    --num ;
                    count = 0 ;
                }
                
                //如果到了数组最后则回到开头,形成环
                if(i >= arr.length - 1) i = -1 ;
            }    
        }
        
        public static void main(String[] args)
        {
            int arr[] = {3, 7, 6, 12, 1, 5, -1, 9};
            
            print(arr, 3);
            
            System.exit(0);
        }
    }
      

  3.   

    哦~~
    上面是认识所有数中不会出现0才这样写的……
    if(arr[++i] != 0)
    arr[i] = 0 ;   //设为0,而不是什么所谓的“最大数”………………
      

  4.   

    ArrayList,好东西……
    不知道效率怎么样……^_^Java不支持指针啊……
    如果是用指针(链表)来实现ArrayList可能效率会高上好多……^_^
    特别是对于很大的数组……
      

  5.   

    呵呵,BabyWhite(BabyWhite)
    Java不支持指针啊……
    如果是用指针(链表)来实现ArrayList可能效率会高上好多……^_^
    特别是对于很大的数组……java中用引用来模拟指针的作用。其实用链表会更快一点?
    这个不一定,主要取决步长(num的值)的大小,如果num很小,用链表也许快一点。
    java中有链表的。LinkedList.
    import java.util.*;
    public class A
    {
    public static void main(String [] args)
    {
    int a[]={3,7,6,12,1,5,-1,9};
    LinkedList<Integer>ai=new LinkedList<Integer>();
    for(int i=0;i<a.length;i++)
    ai.add(a[i]);
    int num=2;
    int index=0;
    while(ai.size()>0)
    {

    System.out.println(ai.remove(index));
    if(ai.size()==0)break;
    index=(index+num)%ai.size();
    }
    }
    }