在Python中查找每个树的最小高度增加成本,其中相邻的树高度不同

在Python中查找每个树的最小高度增加成本,其中相邻的树高度不同

假设我们有一个名为heights的数字列表,表示植物的高度,还有一个名为costs的值列表,表示将植物的高度增加一的价格。我们必须找到使heights列表中每个高度与相邻高度不同的最小成本。

因此,如果输入的是heights = [3, 2, 2] costs = [2, 5, 3],则输出将是3,因为我们可以将最后一个高度增加1,这需要花费3。

为了解决这个问题,我们将遵循以下步骤 −

  • 定义一个名为dp()的函数。这将取idx,l_height

  • 如果idx与heights的大小-1相同,则

    • 如果heights[idx]与l_height不同,则返回0,否则返回costs[idx]
  • ret := inf

  • for i in range 0 to 2, do

    • 如果heights[idx] + i与l_height不同,则
      • ret := ret、dp(idx + 1,heights[idx] + i) + costs[idx] * i的最小值
  • 返回ret

  • 从main方法返回dp(0,null)

示例

让我们看看以下实现,以获得更好的理解 −

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

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程