经典笔试题:标号1-n的n个人首尾相接,1到3报数,报到3的退出,求最后一个人的标号
Posted Perry Blog
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了经典笔试题:标号1-n的n个人首尾相接,1到3报数,报到3的退出,求最后一个人的标号相关的知识,希望对你有一定的参考价值。
JAVA笔试题:标号1-n的n个人首尾相接,1到3报数,报到3的退出,求最后一个人的标号
代码如下:
public class Test { public static void main(String[] args) { System.out.println(lastPerson(13)); } public static int lastPerson(int n) { if (n < 1) { throw new IllegalArgumentException("人数不能小于1"); } int num = 0; // 模拟报数 1~3 int outCount = 0; // 退出人数 int[] persons = new int[n + 1];// 初始化人数列表 // 给每个人进行标号,以便获取最后留下那个人的编号 for (int i = 1; i <= n; i++) { persons[i] = i; } int j = 1; while (true) { if (j > n) { // 如果j>n; 重新开始 j=1; j = 1; } if (persons[j] != 0) { // 如果这个人没有退出,则报数 num++; } if (num == 3 && outCount != n - 1) { // 如果退出人数不等于或者说小于n-1, 则表示游戏未结束 num = 0; // num重置 persons[j] = 0; // 表示此人退出 outCount++; // 退出人数+1 } else if (outCount == n - 1) { // 只剩下最后一人,表示此人是幸存者 return j; } j++; } } }
以上是关于经典笔试题:标号1-n的n个人首尾相接,1到3报数,报到3的退出,求最后一个人的标号的主要内容,如果未能解决你的问题,请参考以下文章
标号1-n的n个人首尾相接,1到3报数,报到3的退出,求最后一个人的标号
幸存者游戏, 数字对生成树, 飞机最低可俯冲高度,整理书架 -paypal笔试题2019
幸存者游戏, 数字对生成树, 飞机最低可俯冲高度,整理书架 -paypal笔试题2019
C语言试题142之有 n 个人围成一圈,顺序排号。从第一个人开始报数(从 1 到 3 报数),凡报到 3 的人退出 圈子,问最后留下的是原来第几号的那位。