给定一个大小为 n 的数组,我需要编写一个函数,删除数组中的每个 m 个元素,直到数组中仅存在一个元素并返回该值。
有人可以给我提示吗?
听起来你正试图解决这个问题约瑟夫问题 http://en.wikipedia.org/wiki/Josephus_problem:
有人站成一圈
等待被执行。之后
第一个人被处决,一定数量
的人被跳过,其中一个人被跳过
被执行。话又说回来,人们是
跳过,一个人被处决。这
消除循环进行
(变得越来越小
当被处决的人被移走时),
直到只剩下最后一个人,
被赋予自由。
任务是选择地点
最初的圆圈,以便你生存
(是最后剩下的)。
wiki 文章包含针对上述问题的一个非常简单的递归解决方案:让 n = 人数,k = 每次删除要跳过的人数,然后:
f(1, k) = 0
f(n, k) = (f(n - 1, k) + k) % n
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)