Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 印刷金字塔拼图_Algorithm - Fatal编程技术网

Algorithm 印刷金字塔拼图

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 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的方式构造图形

       / 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
),这与堆不同。