【问题标题】:Printing Pyramid Puzzle打印金字塔拼图
【发布时间】:2012-01-25 09:50:05
【问题描述】:

推导出一个算法,用于用所有可能的组合打印金字塔,使最轻和最小的人位于金字塔顶部,最重和最大的人作为底部

例如:

A 人 80kg 140 cms

B 人 90 公斤 150 厘米

C 人 100kg 160 cms

人 D 100kg 170 cms

人E 150kg 180 cms

人 F 160kg 185 cms

  A
 B C
D E F

注意: 身高和体重比其他人大的人不能躺在那个人身上 不是每个人都必须成为金字塔结构的一部分

【问题讨论】:

  • 金字塔一定要“满”吗?即在这种情况下是 1 人、3 人还是 6 人金字塔?另外,在你的身材中,B 可以比 F 更重或更高吗?
  • 金字塔不一定要满。它可以是 3 人 6 人金字塔。 (虽然不可能有 1 人金字塔)。
  • @dfens:不,我也喜欢它,这个金字塔中的一个节点可以有 2 个父节点 [查看 OP 示例中的 E],这与堆不同。

标签: algorithm


【解决方案1】:

这是一个粗略的想法。

如果X > Y(两个组件)并且不存在Z X > Z > Y,则以有向边从节点X 到Y 的方式构建图

       / C \
F -> E       B -> A
       \ D /

然后构造所有高度为 1 的树,并像这样递归构造其余的树:

标记树中所有使用的节点(最初,只有一个节点) 要将一个人 X 放在另外两个人 Y Z 之下,您只能使用图中 under Y Z

的人

使用所有排列并递归重复,直到你不能再构造

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-22
    相关资源
    最近更新 更多