从左上角到右下角,每次只能向右或者向下移动,问路径总值最大是多少?
今天刚好让我撞见是每日一题,刚好又一眼知道怎么做
int maxValue(vector<vector<int>>& grid) {
int m = grid.size(), n = grid[0].size();
// 二维dp,dp[i][j]表示到达i行j列位置的最大价值
vector<vector<int>> dp(m + 1, vector<int>(n + 1, 0));
// 状态转移方程
for (int i = 1; i <= m; ++i)
for (int j = 1; j <= n; ++j)
dp[i][j] = max(dp[i - 1][j], dp[i][j - 1]) + grid[i - 1][j - 1];
return dp[m][n];
}
空间效率不太行,但是感觉又没有那么好优化