码迷,mamicode.com
首页 > 其他好文 > 详细

快速查找约瑟夫问题的最后活体编号

时间:2018-09-23 22:34:38      阅读:210      评论:0      收藏:0      [点我收藏+]

标签:oid   学分   you   for   imp   ida   class   参考   描述   

放弃使用链表描述问题过程的方式编写代码,采用具体数学分析推导实现实现该功能

import org.junit.Test;

/**
 * @author lorem
 */
public class SuicidalGameTest {
    @Test
    public void test() {
        System.out.println(survivor(41, 3));
        System.out.println(survivor(3L, 3));
    }

    private long survivor(int n, int m) {
        int sum = 0;
        for (int i = 2; i <= n; i++) {
            sum = (sum + m) % i;
        }
        return ++sum;
    }

    private long survivor(long n, int m) {
        if (n < 1 || m < 1) {
            return -1;
        }
        if (n == 1) {
            return 1;
        }
        return (survivor(n - 1, m) + m - 1) % n + 1;
    }
}

参考链接:

  • https://www.youtube.com/watch?v=fZ3p2Iw-O2I
  • https://zlearning.netlify.com/math/concretemath/josephus

快速查找约瑟夫问题的最后活体编号

标签:oid   学分   you   for   imp   ida   class   参考   描述   

原文地址:https://www.cnblogs.com/loremwalker/p/9693658.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!