zoukankan      html  css  js  c++  java
  • java实现蓝桥杯约瑟夫环

    n 个人的编号是 1~n,如果他们依编号按顺时针排成一个圆圈,从编号是1的人开始顺时针报数。
    (报数是从1报起)当报到 k 的时候,这个人就退出游戏圈。下一个人重新从1开始报数。
    求最后剩下的人的编号。这就是著名的约瑟夫环问题。

    本题目就是已知 n,k 的情况下,求最后剩下的人的编号。

    题目的输入是一行,2个空格分开的整数n, k
    要求输出一个整数,表示最后剩下的人的编号。

    约定:0 < n,k < 1百万

    例如输入:
    10 3

    程序应该输出:
    4

    每杀掉一个人,其实就是把这个数组向前移动了M位。然后逆过来,就可以得到这个递推式。

    因为求出的结果是数组中的下标,最终的编号还要加1

    import java.util.Scanner;
    
    /***
     * @Author: Mr.shen
     * @Date: 2019/5/8 11:28
     */
    public class 约瑟夫环 {
        public static void main(String[] args) {
            Scanner in = new Scanner(System.in);
            int n = in.nextInt(), k = in.nextInt();
            int p = 0;
            for (int i = 2; i <= n; i++) {
                p = (p + k) % i;
            }
            System.out.println(p + 1);
     
    }
    
    

    详细的可以看另一篇文章约瑟夫斯问题

  • 相关阅读:
    模板层
    视图层
    路由层
    图书管理系统
    orm基础
    django目录结构介绍
    django基础
    20145211 《Java程序设计》第1周学习总结——小荷才露尖尖角
    实迷途其未远,觉今是而昨非——问卷调查
    20145203盖泽双问卷调查
  • 原文地址:https://www.cnblogs.com/a1439775520/p/13076405.html
Copyright © 2011-2022 走看看