動態規劃
class Solution:def minCost(self, costs):row, col = len(costs), 3dp = [[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個房子顏色相同)