有10个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是第几号的人

有10个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是第几号的人

只是用一个for完成

public class Test06 {

    public static void main(String[] args) {
        int[] arr={1,2,3,4,5,6,7,8,9,10};
        int counter=0;//用于计算退出的人数
        int j=0;//用于报数
        /*    arr[i%arr.length]可以用来表示数组成环时元素的定位
         *  j用于报数,和成环元素的定位下标无关
         * */
        for(int i=0;counter<arr.length-1;i++){
            if(arr[i%arr.length]!=0){//元素不为0时,表明没有退出
                if((j+1)%3==0){//报数是3时
                    System.out.println("退出的人是:"+arr[i%arr.length]);
                    arr[i%arr.length]=0;//元素置零表示退出
                    counter++;
                }
                j++;//只要没有退出,报数就加1
                
            }
        }
        for(int i=0;i<arr.length;i++){
            if(arr[i]!=0){
                System.out.println("最后剩下的人是:"+arr[i]+"号");
            }
        }
    }

}
原文地址:https://www.cnblogs.com/Unlimited-Rain/p/12427843.html