推导出一种算法,用于打印具有所有可能组合的金字塔,以便最轻和最小的人躺在金字塔顶部,最重的人和最大的人作为基础
例如:
人A 80公斤140厘米
人B 90kg 150厘米
人C 100公斤160厘米
人D 100kg 170厘米
人E 150公斤180厘米
人F 160kg 185 cms
A
B C
D E F
注意: 身高和体重比其他人大的人不能躺在那个人的上面 它不是每个人成为金字塔结构一部分的理由
答案 0 :(得分:3)
这是一个粗略的想法。
如果X > Y
(两个组件),有向边从节点X转到Y,并且没有Z
X > Z > Y
为您的示例,那么构建图形
/ C \
F -> E B -> A
\ D /
然后构造所有高度为1的树,然后递归地构造其余的树:
标记树中所有已使用的节点(最初只有一个节点)
如果将某个人X
置于另外2个人Y Z
之下,则您只能使用图表中 Y Z
下的人
使用所有排列并递归重复,直到你不再构造