【问题标题】:magic sequence of cards recursive algorithm魔牌序列递归算法
【发布时间】:2013-09-13 22:19:08
【问题描述】:

我在一次采访中被问到这个问题,我无法完全回答。事实上,面试官自己也很困惑。想知道是否有人知道问题和答案的明确细节。

据我记忆,问题是这样的:

  • 如果你有 n 张牌,首先将第一张牌面朝上放在桌子上,你会得到一个魔法序列, 将 1+1(即 2 张牌)插入牌组末尾,取出下一张(第 3 张)牌并将其正面朝上放在桌子上,取出 3+1(即 4 张牌)并将它们插入牌组的末尾。

    所以基本上,每次迭代,你都会拿一张牌面朝下放在桌子上,然后在牌组的末端插入 i+1 张牌。

这是我从问题中理解的,我可能弄错了一些细节。但无论如何,现在的问题是:

  • 给定一个值 n(所以让 n=5,所以卡片是 A、2、3、4、5)
  • 在这些卡片形成的魔法序列中找到第 k 个值。

显然这可以通过递归来解决,而不必执行直到 n 的操作。我建议我先获取魔法序列,然后返回第 k 个元素,但显然有更好的方法。另外,想知道是否有人知道这个问题的完整细节。

谢谢!

【问题讨论】:

  • 你基本上是想在3 + 7 + ...系列中找到k-th术语吗?

标签: algorithm data-structures poker


【解决方案1】:

我不确定该怎么做,但我认为一种方法可能是解决/简化递归关系:

f(1) = 1
f(2) = 3
f(3) = 7
f(4) = 15

f(k) = 2 * f(k-1) + 1 (mod n)

或者,有些人喜欢这样称呼它,

2^k - 1 (mod n)

...嘘

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-02-21
    • 1970-01-01
    • 2015-01-21
    • 1970-01-01
    • 1970-01-01
    • 2017-07-23
    • 1970-01-01
    • 2013-02-14
    相关资源
    最近更新 更多