推导出一种用于打印金字塔的算法,该算法具有所有可能的组合,使得最轻和最小的人躺在金字塔顶部,最重的人和最大的人作为基础
例如 :
人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)
注意:身高和体重大于其他人的人不能躺在那个人的顶部不是每个人都成为金字塔结构的一部分
这是一个粗略的想法。
以有向边从节点 X 到 Y 的方式构造一个图,如果 X > Y
(两个组件)并且不存在这样的Z
,X > Z > Y
例如
/ C \
F -> E B -> A
\ D /
Run Code Online (Sandbox Code Playgroud)
然后构造所有高度为 1 的树,并递归地构造其余的树,如下所示:
标记树中所有使用的节点(最初,仅一个节点)要将一个人放在X
另外 2 个人下Y Z
,您只能使用图中位于下的人 Y Z
使用所有排列并递归重复,直到无法构造更多
归档时间: |
|
查看次数: |
511 次 |
最近记录: |