news 2026/5/13 8:20:13

报数游戏问题

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
报数游戏问题

一、题目描述

100个人围成一圈,每个人有一个编码,编号从1开始到100。

他们从1开始依次报数,报到为M的人自动退出圈圈,然后下一个人接着从1开始报数,直到剩余的人数小于M。

请问最后剩余的人在原先的编号为多少?

二、输入输出描述

输入描述
  • 整数M。
输出描述
  • 按照原先的编号从小到大的顺序,以英文逗号分割输出编号字符串;
  • 如果输入参数M小于等于1或者大于等于100,输出ERROR!;

三、示例

输入

3

输出58,91
说明输入M为3,最后剩下两个人。
输入

4

输出34,45,97
说明输入M为4,最后剩下三个人。

四、解题思路

1. 核心思想

使用链表 + 迭代器模拟循环报数淘汰过程,遍历节点时动态删除被淘汰的人,直到剩余人数<M,最后排序输出结果。

2. 问题本质分析

这是一个循环报数删除问题(约瑟夫环)

  • 对象:1~100 连续编号
  • 规则:循环报数,报到 M 淘汰
  • 停止条件:剩余人数 < M
  • 输出:剩余编号从小到大
  • 本质:循环遍历 + 动态删除 + 结果排序

3. 核心逻辑

  1. 输入校验:M 必须是 2~99,否则报错
  2. 链表存储:用 LinkedList 存 1~100,方便删除
  3. 迭代器遍历:支持循环遍历 + 中途删除节点
  4. 报数淘汰:每报数到 M,删除当前人,计数器归零
  5. 停止条件:链表大小<M 时停止淘汰
  6. 排序输出:剩余编号升序,逗号拼接

4. 步骤拆解

  1. 输入与校验

    • 读取 M
    • 不在 2~99 直接输出 ERROR
  2. 初始化数据

    • 生成 1~100 编号,存入 LinkedList
  3. 循环淘汰

    • 迭代器遍历,逐个报数
    • 报到 M 就删除,计数器归零
    • 直到人数<M 停止
  4. 结果处理

    • 剩余编号升序排序
    • 拼接成逗号分隔格式
    • 输出字符串

五、代码实现

import java.util.*; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int M = sc.nextInt(); // 非法判断 if (M <= 1 || M >= 100) { System.out.println("ERROR!"); return; } // 初始化 1~100 编号 LinkedList<Integer> list = new LinkedList<>(); for (int i = 1; i <= 100; i++) { list.add(i); } int count = 0; // 当前报数 // 剩余人数 >= M 就继续淘汰 while (list.size() >= M) { ListIterator<Integer> it = list.listIterator(); while (it.hasNext() && list.size() >= M) { it.next(); count++; // 报到 M 就删除 if (count == M) { it.remove(); count = 0; // 下一个从 1 开始 } } } // 排序(题目要求按编号从小到大输出) Collections.sort(list); // 输出格式拼接 StringBuilder sb = new StringBuilder(); for (int num : list) { sb.append(num).append(","); } if (sb.length() > 0) { sb.deleteCharAt(sb.length() - 1); } System.out.println(sb); } }
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/13 8:19:15

车厘子质检缺陷检测数据集VOC+YOLO格式792张4类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件)图片数量(jpg文件个数)&#xff1a;792标注数量(xml文件个数)&#xff1a;792标注数量(txt文件个数)&#xff1a;792标注类别数&…

作者头像 李华
网站建设 2026/5/13 8:17:07

ClawRank:模块化智能爬虫框架的设计、实现与实战应用

1. 项目概述&#xff1a;一个为开发者打造的“智能爬虫”工具箱最近在GitHub上闲逛&#xff0c;发现了一个挺有意思的项目&#xff0c;叫hansenliang/ClawRank。光看名字&#xff0c;Claw&#xff08;爪子&#xff09;和Rank&#xff08;排名&#xff09;&#xff0c;很容易让人…

作者头像 李华
网站建设 2026/5/13 8:14:41

从游戏地图到3D建模:聊聊坐标系在程序员日常中的那些事儿

从游戏地图到3D建模&#xff1a;坐标系在程序员日常中的实战指南 当你第一次在Unity中拖拽一个游戏角色到场景中&#xff0c;是否好奇过为什么它的位置显示为(0,0,0)&#xff1f;当你在Three.js中尝试让相机环绕模型旋转时&#xff0c;有没有被那些角度参数搞得晕头转向&#…

作者头像 李华
网站建设 2026/5/13 8:14:25

iCircuit:iPad上的电子电路仿真神器,从原理到实践全解析

1. 项目概述与核心价值 最近和一位老朋友Alvin聊天&#xff0c;他是一位资深的硬件工程师&#xff0c;我们曾一起合作过一些项目。他兴奋地给我发来一封邮件&#xff0c;强烈推荐了一款他正在使用的iPad应用——iCircuit。这让我立刻提起了兴趣&#xff0c;因为在移动设备上进行…

作者头像 李华