美文网首页
数 3 游戏 1

数 3 游戏 1

作者: Ridiculous_one | 来源:发表于2018-07-13 17:42 被阅读0次

题目

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

解答

public class WinnerGame {
    public static void main(String[] args) {
        WinnerGame wg = new WinnerGame();
        System.out.println(wg.getWinner(758));
    }

    public int getWinner(int n) {
        // 剩余人数
        int count = n;

        // 从1-count给每个人编号,不使用第一位
        int[] person = new int[count + 1];
        person[0] = -1;

        for (int i = 1; i < person.length; i++) {
            person[i] = i;
        }

        // 从 1-count 循环计数
        int now = 1;
        // 从 1-3 循环计数
        int m = 1;

        // 只要剩余人数大于1,就一直循环
        while (count > 1) {
            // 如果数到3,就淘汰这个人
            if (m == 3) {
                for (int i = now; i < count - 1; i++) {
                    // 淘汰第now个人,后面的人往前移一位
                    person[i] = person[i + 1];
                }
                // 剩余人数减1
                count--;
                // 因为后面人往前移了一位,now应该不动
                // 但下面now总是会加1,所以此处减1抵消
                now--;
            }

            // 继续往后数,如果超过了剩余人数就回到第一个人
            if (++now > count) {
                now = 1;
            }

            // 1-3循环计数器也加1,如果数到4,就回到1
            if (++m > 3) {
                m = 1;
            }
        }

        // 最终第一个位置的人就是获胜者
        return person[1];
    }
}

相关文章

  • 数 3 游戏 1

    题目 有 n 个人围成一圈,顺序排号。从第一个人开始报数(从 1 到 3 报数),凡报到 3 的人退出圈子,问最后...

  • 数 3 游戏 2

    题目 有 n 个人围成一圈,顺序排号。从第一个人开始报数(从 1 到 3 报数),凡报到 3 的人退出圈子,问最后...

  • python学习-字符串-实例1

    猜数游戏 1、流程图: 2、代码: 3、运行结果: 4、函数 1、random.randint(a,b) 产生随机...

  • 20170922学习力践行

    1.数理 【4-6静水流深】数理践行d4 1.回家的时候玩跨步游戏,我走一步,他走两步,她数1、2,我数1,她数3...

  • 第二层次的思维

    听过一个关于猜数的游戏,全班同学猜一个数,1-100之间,猜到的数大家给出得数字的平均数的2/3就算胜出,意思就要...

  • 上交OJ-1005. 数独

    1005. 数独 题目描述 数独游戏,具体规则如下: 每一行都用到1,2,3,4,5,6,7,8,9, 位置不限,...

  • 研修日志——张艳霞

    2018年1月3日 一、数感 老师:通过游戏——帮助更精确的认识到每个孩子的发展水平——恰当的方式培养数感 孩子:...

  • 通过Fizz Buzz游戏了解传统编程和机器学习编程的区别

    一、游戏介绍 玩家从1数到100,如果碰到能被3和5整除的数字,那么喊'fizzbuzz',如果碰到能被3整除的数...

  • 猜字小游戏

    写一个猜数字的游戏,要求:系统生成一个随机数(1-10),用户有3次机会,输入数字去猜。 如果输入数 小了 或者 ...

  • #写手帐,就是记录你一生的帐#1组5号墨墨

    昨日重要事情 完成跑步1000米 今天重要3件事 1 英语30分钟 2 数学30分数 3 游戏30分钟

网友评论

      本文标题:数 3 游戏 1

      本文链接:https://www.haomeiwen.com/subject/jmjspftx.html