1. 程式人生 > >10人圍圈排號,報3退圈,留下幾號。

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);
            }
        }
    }
}