约瑟夫问题(问题总结)
约瑟夫问题描述
n 个人标号0,1,2,…n-1 。逆时针站一圈,从 0 号开始,每一次从当前的人逆时针数 个,然后让这个人出局。问最后剩下的人是谁。
线性解法模板
根据问题的描述,很容易想到递推公式Josephus(n,k)=Josephus(n-1,k)。(其中n是规模,k是循环次数)。
如此有一下代码:
int josephus(int n, int k) {
int res = 0;
for (int i = 1; i <= n; ++i) res = (res + k) % i;
原创
2020-07-15 18:28:12 ·
421 阅读 ·
0 评论