算法-如何优化约瑟夫问题的效率

发布于 2017-01-10 09:42:00 字数 216 浏览 1296 评论 1

有一组数字排成一圈,按1、2、3、4……n依次排号,然后从第一个开始数,数到第m的时候,把这个数剔除,从它后面再开始数,再数到m的时候,把它剔除,如此循环下去,直到最后剩余一个数。 求解最后剩的这个数?
以上问题是一个约瑟夫问题,通常的做法是模拟描述中的过程,但是 时间复杂度高达O(nm),如果n和m都相当大,那么在短时间内找到最后剩下的一个数字是不容易的。如何优化常规算法,使其时间复杂度为 O(n) ?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

泛泛之交 2017-06-28 07:31:08

这是典型的约瑟夫问题,代码就不贴了。约瑟夫问题 PHP

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文