程序以找到最低成本来增加树的高度,而在Python中,没有相邻的树具有相同的高度

假设我们有一个称为高度的数字列表,它表示植物的高度,而我们还有另一个称为成本的值列表,它表示将植物的高度增加一所需的价格。我们必须找到最小的成本,以使高度列表中的每个高度都与相邻高度不同。

因此,如果输入像高度= [3、2、2]成本= [2、5、3],则输出将为3,因为我们可以将最后一个高度增加1,即成本3。

在线示例

让我们看下面的实现以更好地理解-

class Solution:
   def solve(self, heights, costs):
      def dp(idx, l_height):
         if idx == len(heights) - 1:
            return 0 if heights[idx] != l_height else costs[idx]
         ret = float("inf")
         for i in range(3):
            if heights[idx] + i != l_height:
               ret = min(ret, dp(idx + 1, heights[idx] + i) + costs[idx] * i)
         return ret
      return dp(0, None)
ob = Solution()
heights = [3, 2, 2]
costs = [2, 5, 3]
print(ob.solve(heights, costs))

输入值

[3, 2, 2], [2, 5, 3]
输出结果
3

猜你喜欢