leetcode256 粉刷房子

2021-10-02 19:43:51 字數 689 閱讀 9912

假如有一排房子,共 n 個,每個房子可以被粉刷成紅色、藍色或者綠色這三種顏色中的一種,你需要粉刷所有的房子並且使其相鄰的兩個房子顏色不能相同。

當然,因為市場上不同顏色油漆的**不同,所以房子粉刷成不同顏色的花費成本也是不同的。每個房子粉刷成不同顏色的花費是以乙個 n x 3 的矩陣來表示的。

例如,costs[0][0] 表示第 0 號房子粉刷成紅色的成本花費;costs[1][2] 表示第 1 號房子粉刷成綠色的花費,以此類推。請你計算出粉刷完所有房子最少的花費成本。

注意:所有花費均為正整數。

示例:輸入: [[17,2,17],[16,16,5],[14,3,19]]

輸出: 10

解釋: 將 0 號房子粉刷成藍色,1 號房子粉刷成綠色,2 號房子粉刷成藍色。

最少花費: 2 + 5 + 3 = 10。

思路:dp[i][0,1,2]分別代表第i個格仔必須用紅、藍、綠刷的最優解。則dp[i][0]的前乙個格仔可以是藍或綠,也就是dp[i-1][1和dp[i-1][2]兩種情況,取最優解加上cost[i][0]即可。另兩種類似。

dp[i]只和dp[i-1]有關,所以用幾個變數記錄即可。

class solution 

return math.min(math.min(r_cost, b_cost),g_cost);

}}

Leetcode 256 粉刷房子

time 20190903 type easy 假如有一排房子,共 n 個,每個房子可以被粉刷成紅色 藍色或者綠色這三種顏色中的一種,你需要粉刷所有的房子並且使其相鄰的兩個房子顏色不能相同。當然,因為市場上不同顏色油漆的 不同,所以房子粉刷成不同顏色的花費成本也是不同的。每個房子粉刷成不同顏色的花費...

LeetCode 256 粉刷房子

假如有一排房子,共 n 個,每個房子可以被粉刷成紅色 藍色或者綠色這三種顏色中的一種,你需要粉刷所有的房子並且使其相鄰的兩個房子顏色不能相同。當然,因為市場上不同顏色油漆的 不同,所以房子粉刷成不同顏色的花費成本也是不同的。每個房子粉刷成不同顏色的花費是以乙個 n x 3 的矩陣來表示的。例如,co...

DP LeetCode256 粉刷房子

注意 所有花費均為正整數。輸入 17,2,17 16,16,5 14,3,19 輸出 10 解釋 將 0 號房子粉刷成藍色,1 號房子粉刷成綠色,2 號房子粉刷成藍色。最少花費 2 5 3 10。1 轉移方程 2 初始條件和邊界情況 3 計算順序 dp max 3 for in range n 1 ...