华为机试题 报数1,2,3 报到3 的出列,最后剩下的是谁

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

输出:多行,每行对应求的结果
思路:就是使用数组简单的模拟报数过程,报到3的标记为true

import java.util.Scanner;

public class baoshu4282 {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n;
        while (sc.hasNext()) {
            n = sc.nextInt();
            boolean[] b = new boolean[n];
            int count = n;
            int t = 0;
            int i = 0;
            while (true) {
                for (i = 0; i < n;i++) {
                    if(b[i]==false)
                    {
                        t++;
                    }
                    if (t == 3) {
                        b[i] = true;
                        t = 0;
                        count--;
                        if (count == 1)
                            break;
                    }
                }
                if (count == 1)
                    break;
            }
            for(int k=0;k<n;k++){
                if(b[k]==false){
                    System.out.println(k+1);
                    break;
                }
            }
        }
    }

}

 

posted on 2016-03-31 22:55  todayjust  阅读(467)  评论(0编辑  收藏  举报

导航