10人围圈排号,报3退圈,留下几号。

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

public class Solution{
    public static void main(String[] args) {
        int[] people = new int[10];
        //给每个人编号
        for(int i = 0;i<10;i++){
            people[i] = i+1;
        }
        //报数标志
        int flag = 0;
        //退出人数
        int quitpeople = 0;//最初所有人都在圈里,所以0人退出
        int i = 0;
        while(quitpeople < 9){  //退出人数小于9循环结束
            if(people[i] != 0){
                //该编号的人还在圈中
                flag++;
            }
            if(flag == 3){
                flag = 0;
                people[i] = 0;
                quitpeople++;
            }
            i++;
            if(i == 10){
                i = 0;
            }
        }
        for(int j = 0;j<10; j++){
            if(people[j] != 0){
                System.out.println(j+1);
            }
        }
    }
}

猜你喜欢

转载自blog.csdn.net/qq_41420688/article/details/84102623