惜喃 2023-06-26 10:02 采纳率: 100%
浏览 65
已结题

约瑟夫环问题,需要帮助

有n个人编号为1~n,排成一个环,从1号人开始从1到m报数,报到m的人离开该环,从下一个人开始继续从1到m报数,报到m的人离开该环,这样一直进行下去,直到最终剩余p个人。
从键盘输入n、m、p,要求n>=2、m>=2、1<=p<n,输出最终剩余的p个初始编号。例如:输入n、m、p依此为,4、3、2,则输出为1和4。

  • 写回答

2条回答 默认 最新

  • 瞬间的未来式 2023-06-26 10:17
    关注

    该回答引用chatgpt:

    img

    
    package com.school;
    
    import java.util.ArrayList;
    import java.util.List;
    import java.util.Scanner;
    
    public class JosephusCircle {
        public static void main(String[] args) {
            Scanner scanner = new Scanner(System.in);
            System.out.print("请输入总人数n:");
            int n = scanner.nextInt();
            System.out.print("请输入报数上限m:");
            int m = scanner.nextInt();
            System.out.print("请输入最终剩余人数p:");
            int p = scanner.nextInt();
    
            // 创建初始编号列表
            List<Integer> people = new ArrayList<>();
            for (int i = 1; i <= n; i++) {
                people.add(i);
            }
    
            int index = 0;  // 当前报数的人在列表中的索引
    
            while (people.size() > p) {
                // 报数m次
                for (int i = 1; i < m; i++) {
                    index = (index + 1) % people.size();  // 环形取余
                }
    
                // 移除报到m的人
                people.remove(index);
            }
    
            // 输出最终剩余的人
            System.out.println("最终剩余的" + p + "个人的初始编号为:");
            for (int i = 0; i < p; i++) {
                System.out.println(people.get(i));
            }
        }
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 7月4日
  • 已采纳回答 6月26日
  • 创建了问题 6月26日

悬赏问题

  • ¥15 webstorm上开发的vue3+vite5+typeScript打包时报错
  • ¥15 vue使用gojs,需求在link中的虚线上添加方向箭头
  • ¥15 CSS通配符清除内外边距为什么可以覆盖默认样式?
  • ¥15 SPSS分类模型实训题步骤
  • ¥15 求解决扩散模型代码问题
  • ¥15 工创大赛太阳能电动车项目零基础要学什么
  • ¥20 limma多组间分析最终p值只有一个
  • ¥15 nopCommerce开发问题
  • ¥15 torch.multiprocessing.spawn.ProcessExitedException: process 1 terminated with signal SIGKILL
  • ¥15 QuartusⅡ15.0编译项目后,output_files中的.jdi、.sld、.sof不更新怎么解决