int minimumTotal(vector<vector<int> > &triangle)
{
// write your code here
if(triangle.size()==0)
return 0;
if(triangle.size()==1)
return triangle[0][0];
int rows = triangle.size();
for(int i=rows-2;i>=0;i--)
{
for(int j=0;j<triangle[i].size();j++)
{
int tem = min(triangle[i+1][j],triangle[i+1][j+1])+triangle[i][j];
triangle[i][j] = tem;
}
}
return triangle[0][0];
}
想法:从下层往上层计算,i从倒数第二层开始,把第i层的数改为i层对应位置上的数加上i+1层数最小的数,如层循环,直到第一层,返回结果即为最小值!!!
lintcode ----数字三角形
最新推荐文章于 2017-07-18 13:01:00 发布