Algorithm 最高可能金字塔

Algorithm 最高可能金字塔,algorithm,logic,2d,Algorithm,Logic,2d,我什么都试过了,但如果没有暴力,我仍然无法解决这个问题: 我得到N个已知高度和宽度的块。我可以把它们旋转成高变宽,宽变高,我必须用它们建造尽可能高的金字塔,当然我可以改变块的顺序。 问题是不能将宽度为X的块放在宽度小于X的块上。 编辑: 问题是,不能将块放在相同宽度的块上。 有什么想法吗?阅读您的问题陈述和评论后,我了解到您想要建造最高的金字塔,其宽度从下到上递减。 如果是这种情况,那么我们可以做的只是以下步骤: 仅当宽度>高度时,在块上循环并交换宽度和高度。 现在,按宽度的降序对块数组进行排序

我什么都试过了,但如果没有暴力,我仍然无法解决这个问题: 我得到N个已知高度和宽度的块。我可以把它们旋转成高变宽,宽变高,我必须用它们建造尽可能高的金字塔,当然我可以改变块的顺序。 问题是不能将宽度为X的块放在宽度小于X的块上。 编辑: 问题是,不能将块放在相同宽度的块上。
有什么想法吗?

阅读您的问题陈述和评论后,我了解到您想要建造最高的金字塔,其宽度从下到上递减。 如果是这种情况,那么我们可以做的只是以下步骤:

仅当宽度>高度时,在块上循环并交换宽度和高度。 现在,按宽度的降序对块数组进行排序,这是用于在金字塔中从下到上堆叠块的顺序

答案是所有高度的总和

注意:仅当您想显示块的顺序时才需要步骤-2 从金字塔的底部到顶部


在阅读你们的问题陈述和评论时,我的理解是你们想要建造最高的金字塔,宽度从下到上递减。 如果是这种情况,那么我们可以做的只是以下步骤:

仅当宽度>高度时,在块上循环并交换宽度和高度。 现在,按宽度的降序对块数组进行排序,这是用于在金字塔中从下到上堆叠块的顺序

答案是所有高度的总和

注意:仅当您想显示块的顺序时才需要步骤-2 从金字塔的底部到顶部


如果这些块可以在没有任何约束的情况下直接相互堆叠,则对它们进行迭代并求和maxblock.height、block.width,这将是最大可能的高度。这是一个线性算法,你不能做得更好,因为你需要检查每个块。。。或者你的问题完全是另一回事?@AlekseiMaide问题是你不能把宽度为X的块放到宽度小于X的块上。你的问题似乎不清楚。请你展示你所做的暴力代码,并提供一些预期输入/输出的测试用例。你能提供金字塔的定义吗,我们怎么知道金字塔是有效的?对N有什么限制吗?这个问题,正如所问的,太简单了。我认为您可能在转录它时犯了一个错误。如果这些块可以在没有任何约束的情况下直接堆叠在一起,那么对它们进行迭代并求和maxblock.height、block.width,它将是可能的最大高度。这是一个线性算法,你不能做得更好,因为你需要检查每个块。。。或者你的问题完全是另一回事?@AlekseiMaide问题是你不能把宽度为X的块放到宽度小于X的块上。你的问题似乎不清楚。请你展示你所做的暴力代码,并提供一些预期输入/输出的测试用例。你能提供金字塔的定义吗,我们怎么知道金字塔是有效的?对N有什么限制吗?这个问题,正如所问的,太简单了。我想你可能在抄写它时犯了一个错误。所以第一步是旋转块,使它们比宽的更高???@MBo,是的。第一步确保金字塔更高。@BishalGautam问题是,你不能把一个块放在一个相同宽度的块上。所以第一步是旋转块,使它们高于更宽的???@MBo,是的。第一步确保金字塔更高。@BishalGautam问题是,你不能把一个块放在一个相同宽度的块上。