【題目描述】
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個(gè)房子在一列直線上,現(xiàn)在我們需要給房屋染色,分別有紅色藍(lán)色和綠色。每個(gè)房屋染不同的顏色費(fèi)用也不同,你需要設(shè)計(jì)一種染色方案使得相鄰的房屋顏色不同,并且費(fèi)用最小。
費(fèi)用通過一個(gè)nx3?的矩陣給出,比如cost[0][0]表示房屋0染紅色的費(fèi)用,cost[1][2]表示房屋1染綠色的費(fèi)用。
?注意事項(xiàng)
所有費(fèi)用都是正整數(shù)
【題目鏈接】
www.lintcode.com/en/problem/paint-house/
【題目解析】
這道題只有3種顏色,所以很簡(jiǎn)單。dp[i][j]表示第i幢房子涂j的顏色最小的總和,即從前一幢房子的狀態(tài)dp[i-1][] (k != j)中選一個(gè)最小的再加上給第i幢房子涂j顏色的cost。如果直接在costs上修改,則不用單獨(dú)開dp的空間,可以優(yōu)化空間。
【參考答案】