快速查找約瑟夫問題的最後活體編號
阿新 • • 發佈:2018-09-23
int 參考 import system 數學分析 i++ -o org con
放棄使用鏈表描述問題過程的方式編寫代碼,采用具體數學分析推導實現實現該功能
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
快速查找約瑟夫問題的最後活體編號