37.报数

Posted wbh1996

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了37.报数相关的知识,希望对你有一定的参考价值。

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

        int[] a = new int[100];
        int p = 0;
        System.out.print("请输入一个整数:");
        Scanner in = new Scanner(System.in);
        int n = in.nextInt();
        int q = n;
        for(int i=0; i<n; i++)
        {
            a[i] = i+1;
        }
        for(int i=0; ; i++)
        {
            if( i==n )//当i++一直到n时,肯定有一些没有被选到,比如我们输入8,第一轮是3,6被赋值0,当i=8时,继续下一轮
            {
                i=0;
            }
            if( a[i]!=0 )//我们下面定义的是当循环到三时,就赋值0,所以这边等0的不考虑在内
            {
                p++;
            }
            else continue;
            if( p%3==0 )//这个就是从0一直加,到三的倍数就赋值为0,从而就达到我们的目的
            {
                a[i]=0;//上面q=n;表明q==n,只有一个为0就减一,为下面做铺垫
                q--;
            }
            if( q==1 )//当剩下最后一个就输出
            {
                break;
            }
        }
        for(int i=0; i<n; i++)
        {
            if(a[i]!=0)
            {
                System.out.print(a[i]);
            }
        }

参考https://www.cnblogs.com/doudoublog/p/5028761.html

以上是关于37.报数的主要内容,如果未能解决你的问题,请参考以下文章

N个同学排队,1,2,1,2报数,单数退出,双数一排,1,2,1,2报数,单数退出,最后剩下的人原站哪?

c语言简单程序

KDoc:插入代码片段

华为OD机试 -报数游戏(Java) | 机试题+算法思路+考点+代码解析 2023

JAVA围圈报数 问题

队列之士兵报数