首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

约瑟夫环非递归算法跟递归算法分析与实现(ZZ)

2012-12-25 
约瑟夫环非递归算法和递归算法分析与实现(ZZ)【Joseph问题描述】n个人(编号0~(n-1)),从0开始报数,报到(m-1)

约瑟夫环非递归算法和递归算法分析与实现(ZZ)
【Joseph问题描述】
n个人(编号0~(n-1)),从0开始报数,报到(m-1)的退出,剩下的人继续从0开始报数。求胜利者的编号。


【求解思路】
1.非递归算法
我们知道第一个人(编号一定是m%n-1) 出列之后,剩下的n-1个人组成了一个新的约瑟夫环(以编号为k=m%n的人开始):
k k+1 k+2 ... n-2, n-1, 0, 1, 2, ... k-2
并且从k开始报0。
现在我们把他们的编号做一下转换:

int f(int n, int m){    if (n > 1)        return (m + f(n - 1, m)) % n;    else        return 0;}

热点排行