打印金字塔拼图

时间:2012-01-25 09:50:06

标签: algorithm

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

例如:

人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

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

1 个答案:

答案 0 :(得分:3)

这是一个粗略的想法。

如果X > Y(两个组件),有向边从节点X转到Y,并且没有Z X > Z > Y为您的示例,那么构建图形

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

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

标记树中所有已使用的节点(最初只有一个节点) 如果将某个人X置于另外2个人Y Z之下,则您只能使用图表中 Y Z下的人

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