题目链接: https://leetcode-cn.com/problems/li-wu-de-zui-da-jie-zhi-lcof/
状态表示: f[i][j]表示从左上角走到[i,j]处拿到的礼物的最大价值;
状态计算: f[i][j] = max(f[i - 1][j], f[i][j - 1]) + grid[i - 1][j - 1]; (f[i][j]坐标从1,1开始)
初始化: f[1,1] = gird[0][0]
public:
int maxValue(vector<vector<int>>& grid) {
int m = grid.size(), n = grid[0].size();
vector<vector<int>> f(m + 1, vector<int>(n + 1, 0));
for(int i = 1; i < m + 1; ++i)
for(int j = 1; j < n + 1; ++j)
f[i][j] = max(f[i - 1][j], f[i][j - 1]) + grid[i - 1][j - 1];
return f[m][n];
}
};
原文:https://www.cnblogs.com/Trevo/p/13066530.html