题目大意: 求一个三角形二维数组从顶到低端的最小路径和
解题思路:动态规划
class Solution {
public:
int minimumTotal(vector<vector<int> > &triangle) {
if(triangle.empty()) {
return 0;
}
int m = triangle.size();
int n = triangle[m - 1].size();
vector<int> dp(n, 0);
for(int i = 0; i < n; i++) {
dp[i] = triangle[m - 1][i];
}
for(int i = m - 2; i >= 0; i--) {
for(int j = n - 1, k = n - m + i; j >= m - 1 - i && k >= 0; j--, k--) {
dp[j] = min(dp[j], dp[j - 1]) + triangle[i][k];
}
}
return dp[n - 1];
}
};