解答约瑟夫环问题的几个方法
来源:互联网 发布:时间序列分析算法 编辑:程序博客网 时间:2024/06/04 18:50
问题描述:约瑟夫环
有编号从1到N的N个人坐成一圈报数,报到M的人出局,下一位再从1开始,
如此持续,直止剩下一位为止,报告此人的编号X。输入N,M,求出X。
常规的解法,简单描述一下,就不写算法了.用所有的元素生成一个循环链表,第一次从第一个向前走M步,将当前元素分离出链表,然后从下一个元素开始走M步,再将当前元素分离出链表,重复以上过程,直到链表中只有一个元素时即为所求.
递归的解法:
非递归的解法,很巧妙:
有编号从1到N的N个人坐成一圈报数,报到M的人出局,下一位再从1开始,
如此持续,直止剩下一位为止,报告此人的编号X。输入N,M,求出X。
常规的解法,简单描述一下,就不写算法了.用所有的元素生成一个循环链表,第一次从第一个向前走M步,将当前元素分离出链表,然后从下一个元素开始走M步,再将当前元素分离出链表,重复以上过程,直到链表中只有一个元素时即为所求.
递归的解法:
int f(int n, int m)
{
if (n > 1)
return (m + f(n - 1, m)) % m;
else
return 0;
}
{
if (n > 1)
return (m + f(n - 1, m)) % m;
else
return 0;
}
非递归的解法,很巧妙:
int f(int n, int m)
{
int i, r = 0;
for (i = 2; i <= n; i++)
r = (r + m) % i;
return r+1;
}
{
int i, r = 0;
for (i = 2; i <= n; i++)
r = (r + m) % i;
return r+1;
}
- 解答约瑟夫环问题的几个方法
- 约瑟夫环问题的详细解答
- 约瑟夫循环问题的解答
- 约瑟夫环问题(1)----Wikipedia上的原文解答
- 关于约瑟夫问题的数学解答。
- 约瑟夫问题的解答(循环单链表)
- 约瑟夫环问题两种情况解答
- java解答约瑟夫问题
- 约瑟夫问题的数学方法
- 约瑟夫问题的数学方法
- 约瑟夫问题的数学方法
- 约瑟夫问题的数学方法
- 约瑟夫问题的数学方法
- 约瑟夫环的问题
- 约瑟夫环的问题
- 约瑟夫环的问题
- 约瑟夫环的问题
- 约瑟夫环的问题
- 查找链表倒数第N个结点的地址(C++)
- 成功人生的10个秘诀
- 2006-2007互联网前沿发展大趋势
- 从按下电源开关到bash提示符 9.系统日志 10.Getty 和 Login 11. Bash
- 拿来先用--有感于版权
- 解答约瑟夫环问题的几个方法
- 销售
- c#中构建异常处理
- WinNT & Win2K下实现进程的完全隐藏
- ASP.NET 2.0网站权限设计实现(转载)
- 万网id---30088192
- 万网id---30088192
- session dataset 访问数据库
- 从按下电源开关到bash提示符 声明 (完)