我已经尝试了一切,但是如果没有蛮力,我仍然无法解决这个问题:
我得到了N个具有已知高度和宽度的块。我可以旋转它们(高度变为宽度,宽度变为高度),并且必须从它们构建尽可能高的金字塔(当然,我可以更改块的顺序)。
问题是您不能将宽度为X的块放在宽度小于X的块上。
编辑:
问题是,您不能将一个块放在相同宽度的块上。
有什么想法吗?
答案 0 :(得分:4)
我了解到您的问题陈述和意见,就是希望您使用width
从下到上以降序构建最高的金字塔。
如果是这种情况,那么我们可以做的只是以下步骤:
width
上循环阻塞并交换height
和width > height
。现在,以宽度的降序对块数组进行排序,这是金字塔中从底部到顶部堆叠块的顺序。
答案是所有高度的总和。
注意:仅当要显示块顺序时才需要步骤-2 从金字塔的底部到顶部。