开始慢慢习惯这种题目
class Solution {
public:
/**
*
* @param matrix int整型vector<vector<>> the matrix
* @return int整型
*/
int minPathSum(vector<vector<int> >& matrix) {
int row = matrix.size(), col = matrix[0].size();
// dp[i][j] 代表i*j大小矩阵的最大路径和
std::vector<std::vector<int>> dp(row + 1, std::vector<int>(col + 1, 0));
// 注意下标的差别
// 对于dp来讲,下标+1代表当前结点
for (int i = 0; i < row; ++i) {
for (int j = 0; j < col; ++j) {
// 只有一行
if (i == 0 && j == 0) {
dp[i + 1][j + 1] = matrix[i][j];
continue;
}
if (i == 0) {
dp[i + 1][j + 1] = matrix[i][j] + dp[i + 1][j];
continue;
}
if (j == 0) {
dp[i + 1][j + 1] = matrix[i][j] + dp[i][j + 1];
continue;
}
dp[i + 1][j + 1] = matrix[i][j] + std::min(dp[i][j + 1], dp[i + 1][j]);
}
}
return dp[row][col];
}
};