Lintcode515 Paint House solution 題解

weixin_33936401發表於2018-04-18

【題目描述】

There are a row of n houses, each house can be painted with one of the three colors: red, blue or green. The cost of painting each house with a certain color is different. You have to paint all the houses such that no two adjacent houses have the same color.

The cost of painting each house with a certain color is represented by a n x 3 cost matrix. For example, costs[0][0] is the cost of painting house 0 with color red; costs[1][2] is the cost of painting house 1 with color green, and so on... Find the minimum cost to paint all houses.

 Notice

All costs are positive integers.

這裡有n個房子在一列直線上,現在我們需要給房屋染色,分別有紅色藍色和綠色。每個房屋染不同的顏色費用也不同,你需要設計一種染色方案使得相鄰的房屋顏色不同,並且費用最小。

費用通過一個nx3 的矩陣給出,比如cost[0][0]表示房屋0染紅色的費用,cost[1][2]表示房屋1染綠色的費用。

 注意事項

所有費用都是正整數

【題目連結】

www.lintcode.com/en/problem/paint-house/

【題目解析】

這道題只有3種顏色,所以很簡單。dp[i][j]表示第i幢房子塗j的顏色最小的總和,即從前一幢房子的狀態dp[i-1][] (k != j)中選一個最小的再加上給第i幢房子塗j顏色的cost。如果直接在costs上修改,則不用單獨開dp的空間,可以優化空間。

【參考答案】

www.jiuzhang.com/solutions/paint-house/

相關文章