思路1 dp

二维dp,代表第n个房子刷第1、2、3种颜色时,最小的花费。最后只需要返回三种颜色中的最小值即可。递推关系为

当前房子刷0,则i-1房子必须刷1或2。其他同理

dp[i][0] = Math.min(dp[i-1][1],dp[i-1][2])+costs[i][0]; dp[i][1] = Math.min(dp[i-1][0],dp[i-1][2])+costs[i][1]; dp[i][2] = Math.min(dp[i-1][1],dp[i-1][0])+costs[i][2];

Last updated