【问题标题】:Is this right? Minheap [closed]这是正确的吗?最小堆[关闭]
【发布时间】:2017-07-05 00:18:40
【问题描述】:

您好,我想知道这些 x 是否位于最小堆的正确位置?我对么?

【问题讨论】:

  • 我投票结束这个问题,因为它不是一个编程问题,而是一个计算机科学问题。

标签: algorithm constraints permutation min-heap


【解决方案1】:

顶部位置是不可能的,因为 3 会比它的孩子大(下面的某个地方是 1 或 2)。

第二层是可能的,因为 2 和 3 可能是 1 的兄弟孩子。

要进入第三级,3 需要有 2 代表直系父母,1 代表祖父母,中间没有其他内容。

第四级是不可能的,因为你需要三个小于 3 的 3 的祖先。

列表形式是树形式的直接转换。所以,这也是一场比赛。

您可能希望通过尝试将9! 的每个排列插入 minheap 并观察找到 3 的位置来凭经验证明这一点。这是一个执行此操作的 Python 脚本:

from heapq import heapify
from itertools import permutations

has_three = [False] * 9
for t in permutations('123456789'):
    s = list(t)
    heapify(s)
    i = s.index('3')
    has_three[i] = True
print(has_three)

结果是:

[False, True, True, True, True, True, True, False, False]

【讨论】:

    猜你喜欢
    • 2011-01-09
    • 1970-01-01
    • 1970-01-01
    • 2012-08-23
    • 2020-02-14
    • 1970-01-01
    • 2011-03-07
    • 1970-01-01
    • 2021-12-11
    相关资源
    最近更新 更多