【发布时间】:2017-07-05 00:18:40
【问题描述】:
【问题讨论】:
-
我投票结束这个问题,因为它不是一个编程问题,而是一个计算机科学问题。
标签: algorithm constraints permutation min-heap
【问题讨论】:
标签: algorithm constraints permutation min-heap
顶部位置是不可能的,因为 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]
【讨论】: