class Solution {
public:
/**
* @param costs: n x 3 cost matrix
* @return: An integer, the minimum cost to paint all houses
*/
int minCost(vector<vector<int>> &costs) {
// write your code here
if(costs.size()==0) return 0;
int len=costs.size();
vector<vector<int>> plan(len,vector<int>(3));
plan[0][0]=costs[0][0];
plan[0][1]=costs[0][1];
plan[0][2]=costs[0][2];
for(int i=1;i<costs.size();i++){
plan[i][0]=min(plan[i-1][1]+costs[i][0],plan[i-1][2]+costs[i][0]);
plan[i][1]=min(plan[i-1][0]+costs[i][1],plan[i-1][2]+costs[i][1]);
plan[i][2]=min(plan[i-1][0]+costs[i][2],plan[i-1][1]+costs[i][2]);
}
return min(min(plan[len-1][0],plan[len-1][1]),plan[len-1][2]);
}
};