在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(selfheightscosts):
      def dp(idxl_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(retdp(idx + 1heights[idx] + i) + costs[idx] * i)
         return ret
      return dp(0None)
ob = Solution()
heights = [322]
costs = [253]
print(ob.solve(heightscosts))
Python

输入

[322][253]
Python

输出

3
Python

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

登录

注册