最基础的一道动态规划题。 我用了二维数组记录了到每个点的最短距离。如果光按照题目要求求最后一排的最短距离的话,用一维数组动态更新每一排的状态即可。
class Solution {
public:
int minimumTotal(vector<vector<int> > &triangle) {
int num = triangle.size();
int res[999][999];
for( int i=0;i<num+1;i++ )
{
for( int j=0;j<num+1;j++ )
{
res[i][j] = 9999999;
}
}
for( int i=1;i<=num;i++ )
{
for( int j=1;j<=i;j++ )
{
res[i][j] = triangle[i-1][j-1];
}
}
for( int i=2;i<=num;i++ )
{
for( int j=1;j<=i;j++ )
{
res[i][j] = min(res[i-1][j-1],res[i-1][j])+res[i][j];
}
}
int MIN = 99999999;
for( int i=1;i<=num;i++ )
{
if( res[num][i]<MIN )
{
MIN = res[num][i];
}
}
return MIN;
}
};