我是初学者,所以我对DP有疑问。
这是我的问题,就像乌龟塔一样,但是有所变化,因为它也为每只乌龟都设置了值。



我在递归关系方面遇到了麻烦,因为我对必须检查每只海龟顶部的重量之和是否高于其强度感到困惑。
我的意思是,我考虑过要为每个添加到塔中的下一只海龟制作一个拥有最佳塔值的数组,但是我不知道如何检查新海龟下的所有海龟是否都可以容纳新的总和重量与力量。

我能想到的唯一方法是将每只海龟的力量减去在其顶部的海龟的current_sum_of_weights减去。但这似乎太复杂了。

我想我首先要根据每个人的体重和力量的总和对海龟进行排序,但是递归仍然很麻烦。

我不需要编写代码,我只想编写递归关系并对其进行证明。

最佳答案

您需要优化值(value),并且正确地指出按强度对海龟进行排序是有帮助的。我们可以从按重量或按值排序开始,但是作为第一步的按强度排序则更有意义,因为通过这种方式,您将看到可能的而不是期望的。但是,重量也是可能性的一部分,因此s * w作为排序标准就更有意义了,因为您要将最大的(沉重的和坚固的)乌龟放到塔的底部,而将最弱的乌龟放到塔的顶部。 。

由于您必须找出最佳解决方案,因此有必要使用除法和因佩拉实现来计算所有看似可行的解决方案,并避免必须评估可证明的更差的替代方案,当候选变异比可证明的替代方案差时,请始终修剪它们,这样才有意义。当前的解决方案。

如果w1
因此,当您找到第一个可以使用的乌龟时,便会寻找具有更多强度,重量或值(value)的替代品。由于建议的排序,较高的索引值很少会具有较高的权重或强度,但这仍然是可能的。

关于algorithm - 乌龟塔变形问题/动态规划,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59225039/

10-10 04:58