【剑指offer】【动态规划】47. 礼物的最大价值
题目链接: 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]
时间复杂度:O(n^2)
空间复杂度:O(n*m)
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];
}
};
知识的价值不在于占有,而在于使用