Algorithm 印刷金字塔拼图
推导出一种算法,用于打印具有所有可能组合的金字塔,使最轻和最小的人位于金字塔顶部,最重和最大的人作为底部 例如: 人A 80公斤140厘米 B人90公斤150厘米 人C 100公斤160厘米 人D 100公斤170厘米 E人150公斤180厘米 人F 160公斤185厘米Algorithm 印刷金字塔拼图,algorithm,Algorithm,推导出一种算法,用于打印具有所有可能组合的金字塔,使最轻和最小的人位于金字塔顶部,最重和最大的人作为底部 例如: 人A 80公斤140厘米 B人90公斤150厘米 人C 100公斤160厘米 人D 100公斤170厘米 E人150公斤180厘米 人F 160公斤185厘米 A B C D E F 注: 身高和体重大于其他人的人不能躺在该人的身上 不是每个人都必须成为金字塔结构的一部分,这里有一个粗略的想法 例如,如果X>Y(两个组件)且没有Z导致X>Z>Y,则以有向边从节点X到Y的方式构
A
B C
D E F
注:
身高和体重大于其他人的人不能躺在该人的身上
不是每个人都必须成为金字塔结构的一部分,这里有一个粗略的想法
例如,如果X>Y
(两个组件)且没有Z
导致X>Z>Y
,则以有向边从节点X到Y的方式构造图形
/ C \
F -> E B -> A
\ D /
然后构造高度为1的所有树,并递归地构造其余树,如下所示:
标记树中所有已使用的节点(最初,仅一个节点)
要将一个人X
置于另两个人Y Z
之下,您只能使用图中位于Y Z
之下的人
使用所有排列并递归重复,直到您不能再构造金字塔是否需要“满”?i、 e.在这种情况下,是1人金字塔、3人金字塔还是6人金字塔?另外,在你们的体型中,B能比F重还是比F高?金字塔并没有必要是满的。它可以是3人6人金字塔。(1人金字塔是不可能的)。@dfens:不,我也喜欢它,一个节点在这个金字塔中可以有2个父节点[看看OP的例子中的
E
),这与堆不同。