/*
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.
*/
// This method is so far the cleanest I have seen. Copied from others.
public int minCost(vector< vector<int> >& costs) {
if(costs.size() == 0 || costs[0].size() == 0) return 0;
int min_red = costs[0][0];
int min_blue = costs[0][1];
int min_green = costs[0][2];
int tmp_red, tmp_blue, tmp_green;
for(int i = 1; i < costs.size(); ++i) {
tmp_red = min_red;
tmp_blue = min_blue;
tmp_green = min_green;
min_red = min(tmp_blue, tmp_green) + costs[i][0];
min_blue = min(tmp_red, tmp_green) + costs[i][1];
min_green = min(tmp_blue, tmp_red) + costs[i][2];
}
return min(min_red, min(min_blue, min_green));
}
LeetCode 256. Paint House
最新推荐文章于 2025-01-20 19:26:24 发布
本文介绍了一种解决房屋涂色问题的方法,目的是找到最低成本方案,确保相邻房屋颜色不同。通过迭代更新每种颜色的最小成本,最终选择三种颜色中成本最低的一种。
325

被折叠的 条评论
为什么被折叠?



