力扣 256. 粉刷房子 LCR 091. 粉刷房子 python AC

动态规划

class Solution:
    def minCost(self, costs):
        row, col = len(costs), 3
        dp = [[0] * col for _ in range(row + 1)]
        for i in range(1, row + 1):
            for j in range(col):
                dp[i][j] = costs[i - 1][j - 1]
                if j == 0:
                    dp[i][j] += min(dp[i - 1][1], dp[i - 1][2])
                elif j == 1:
                    dp[i][j] += min(dp[i - 1][0], dp[i - 1][2])
                elif j == 2:
                    dp[i][j] += min(dp[i - 1][0], dp[i - 1][1])
        return min(dp[row])

dp[i][j]:

i表示第i个房子,j表示涂成的颜色(0、1、2分别表示涂成红、蓝、绿色),dp[i][j]表示第i个房子涂成j色需要的最少成本(只要不和第i-1个房子颜色相同)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值