假设我们有一个称为高度的数字列表,它表示植物的高度,而我们还有另一个称为成本的值列表,它表示将植物的高度增加一所需的价格。我们必须找到最小的成本,以使高度列表中的每个高度都与相邻高度不同。
因此,如果输入像高度= [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