打印金字塔拼图

Ran*_*dan 8 algorithm

推导出一种用于打印金字塔的算法,该算法具有所有可能的组合,使得最轻和最小的人躺在金字塔顶部,最重的人和最大的人作为基础

例如 :

人A 80公斤140厘米

人B 90公斤150厘米

人C 100公斤160厘米

人D 100公斤170厘米

人E 150公斤180厘米

人F 160kg 185厘米

  A
 B C
D E F
Run Code Online (Sandbox Code Playgroud)

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

pen*_*ope 3

这是一个粗略的想法。

以有向边从节点 X 到 Y 的方式构造一个图,如果 X > Y(两个组件)并且不存在这样的ZX > Z > Y例如

       / C \
F -> E       B -> A
       \ D /
Run Code Online (Sandbox Code Playgroud)

然后构造所有高度为 1 的树,并递归地构造其余的树,如下所示:

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

使用所有排列并递归重复,直到无法构造更多