码迷,mamicode.com
首页 > 其他好文 > 详细

标号1-n的n个人首尾相接,1到3报数,报到3的退出,求最后一个人的标号

时间:2018-11-26 20:58:58      阅读:223      评论:0      收藏:0      [点我收藏+]

标签:person   一个人   amp   break   except   static   []   exception   java   

标号1-n的n个人首尾相接,1到3报数,报到3的退出,求最后一个人的标号

public static void lastPerson(int n){
        if (n < 1){
            throw new IllegalArgumentException("人数不能小于0");
        }else {

            int[] persons = new int[n + 1];
            int num = 0;  //模拟报数 1~3
            int dead = 0; //退出人数

            //给每个人进行标号,以便获取最后留下那个人的编号
            for (int i = 1; i <= n; i++) {
                persons[i] = i;
            }

            for (int i = 1; ; i++) {
                if (i > n) { //如果i>n; 重新开始 i=1;
                    i = 1; //等价于 i=1
                }

                if (persons[i] != 0) { //如果这个人没有退出,则报数
                    num++;
                }

                if (num == 3 && dead != n - 1) { //如果退出人数不等于或者说小于n-1, 则表示游戏未结束
                    num = 0;  //num重置
                    persons[i] = 0;   //表示此人退出
                    dead++; //退出人数+1
                } else if (dead == n - 1) { //只剩下最后一人,表示此人是幸存者
                    System.out.println("幸存者编号为:" + i);
                    break;
                }
            }

标号1-n的n个人首尾相接,1到3报数,报到3的退出,求最后一个人的标号

标签:person   一个人   amp   break   except   static   []   exception   java   

原文地址:https://www.cnblogs.com/duosl/p/10022772.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!