25个小朋友抱圈当从 0数到3时,数到3的同学推出圈外,直到最后一人为班长

本文介绍了一个使用Java实现的算法问题,25名学生围成一圈,从1开始按顺序报数,每报到3的学生离开圈子,直至剩下最后一人成为班长。文章详细解释了如何通过数组记录学生状态并实现循环报数逻辑。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

java代码:25个小朋友编号从1到25围一个圈,从头开始1到3报数,报到3这个数的退出圆圈,最后一个留在圈里的小孩就是班长,问:班长到底是多少号小朋友?

拿到这个题我们应该先进行分析
首先
应该用一个长度为25的数组来对小朋友的编号来进行录入

 int[] arr = new int[25];
        for (int i = 0; i < 25; i++) {
            a[i] = i + 1;
        }

在之后每数到3的小朋友就退出圈外我们应该用一个数字来记录 0-1, 1-2, 2-3 的一个过程

那么还有一直要到只剩下一位同学的时候才停止就意味着一共要删除24人所以也要用一个数字来记录删除的人数

        int de = 0;//删除的人数
        int count = 0;//记录谁数到了三  计数器

最后需要判断的是小朋友怎么样才算被移出去了
就可以通过给小朋友编号进行赋值的方式来判断 用0来表示小朋友已经被一出去了 不在进入循环即可

最后代码的实现

        int[] arr = new int[25];
        for (int i = 0; i < 25; i++) {
            arr[i] = i + 1;
        }
        int de = 0;//删除的人数
        int count = 0;//记录谁数到了三  计数器
        while (de < arr.length - 1)  //班上25人最多删24个就要停下来
        {
            for (int i = 0; i < 25; i++) //把数组中的每一个人遍历一次直到while层停止
            {
                if (arr[i] > 0) {
                    count++;// 0 ->  1 ->   2 ->  3 只变化三次
                    //c 0    c1    c2    c3(de)
                    if (count == 3) {
                        arr[i] = 0;
                        count = 0;
                        de++;
                    }
                }
            }
        }
        for (int i = 0; i < 25; i++) {
            if (arr[i] != 0) {
                System.out.println("班长是第" + (i + 1) + "号学生");
            }
        }

效果图:

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值