美文网首页
约瑟夫算法

约瑟夫算法

作者: Michaelhbjian | 来源:发表于2019-06-25 09:07 被阅读0次

约瑟夫环问题是一个非常著名的趣题,即由n个人坐成一圈,按顺时针由1开始给他们编号。然后由第一个人开始报数,数到m的人出局。之后从下一个人开始继续报数,直到所有人都死亡为止。现在需要求的是最后一个出局的人的编号。

题目

给定两个int n和m,代表游戏的人数。请返回最后一个出局的人的编号。保证n和m小于等于1000。

测试样例:

输入:
5 3
返回:4

分析如下:

  • 1、我们来分析一下n=4和k=2的情况:f(4,2) = ((( f(4–1), 2 ) + 2 -1 ) % 4) +1
  • 2、我们要解决f(3,2),我们要计算:f(3,2) = ((( f(3–1), 2 ) + 2 -1 ) % 3) +1
  • 3、为了解决f(2,2),我们要计算:f(2,2) = ((( f(2–1), 2 ) + 2 -1 ) % 2) +1
  • 4、已知f(1,k)=1,然后f(1,2)=1,从而知道f(2,2) = 1f(3,2) = 3f(4,2) = 1

代码如下:

package com.mj.didiDemo.demo.ByteDance;

import java.util.Scanner;

/**
 * @author zhoujian123@hotmail.com 2018/9/12 10:39
 */
public class WS {

    static int josephus(int n, int k) {
        if (n == 1) {
            return 1;
        } else {
            /* The position returned by josephus(n - 1, k)
            is adjusted because the recursive call
            josephus(n - 1, k) considers the original
            position k%n + 1 as position 1 */
            return (josephus(n - 1, k) + k - 1) % n + 1;
        }
    }

    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int k = sc.nextInt();
        System.out.println(josephus(n, k));
    }
}

image.png

相关文章

  • 约瑟夫算法

    1.约瑟夫算法:约瑟夫环:已知n个人(以编号1,2,3…n分别表示)围坐在一张圆桌周围。从编号为k的 人开始报数,...

  • 约瑟夫算法

    约瑟夫环问题是一个非常著名的趣题,即由n个人坐成一圈,按顺时针由1开始给他们编号。然后由第一个人开始报数,数到m的...

  • 算法-约瑟夫环

    有一个数组a[n]顺序存放0~n-1,要求每隔step个数删掉一个数,到末尾时循环至开头继续进行,求最后一个被删掉...

  • 约瑟夫环算法

    什么是约瑟夫环呢?约瑟夫环(约瑟夫问题)是一个数学的应用问题:已知n个人(以编号1,2,3...n分别表示)围坐在...

  • 算法--约瑟夫斯环

    n个人围成一个圆圈,编号为1~n,从第一号开始报数,报到m的倍数的人离开, 一直数下去,直到最后只有一个人, 求此人编号

  • 算法之约瑟夫问题

    把我上学时候在csdn上的笔记搬过来了,便于自己查找 经典的约瑟夫问题 题目:假设下标从0开始,0,1,2 .. ...

  • 算法题—约瑟夫环问题

    前言 本文编程语言使用Java 问题概述 据说著名犹太历史学家 Josephus有过以下的故事:在罗马人占领乔塔帕...

  • 算法 js 解决约瑟夫问题

  • Golang 链表实现约瑟夫算法

    Josephus及他的朋友躲到一个洞中,39个犹太人决定宁愿死也不要被敌人抓到,于是决定了一个自杀方式:41个人排...

  • 约瑟夫问题的一个简单java实现

    约瑟夫问题(有时也称为约瑟夫斯置换),是一个出现在计算机科学和数学中的问题。在计算机编程的算法中,类似问题又称为约...

网友评论

      本文标题:约瑟夫算法

      本文链接:https://www.haomeiwen.com/subject/ajynqctx.html