NC290. 礼物的最大价值
描述
示例1
输入:
[[1,3,1],[1,5,1],[4,2,1]]
输出:
12
C++ 解法, 执行用时: 6ms, 内存消耗: 1164KB, 提交时间: 2022-05-09
const static auto sync_off = []() { ios_base::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr); return nullptr; } (); class Solution { public: int maxValue(vector<vector<int> >& a) { int n = a.size(); int m = a[0].size(); std::vector<vector<int> > b(n + 1, vector<int>(m + 1, 0)); for (int i = 1; i <= n; i++) { for (int j = 1; j <= m; j++) { b[i][j] = max(b[i - 1][j], b[i][j - 1]) + a[i - 1][j - 1]; } } return b[n][m]; } };
C++ 解法, 执行用时: 6ms, 内存消耗: 1172KB, 提交时间: 2022-04-29
const static auto sync_off = [](){ ios_base::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr); return nullptr; }(); class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param grid int整型vector<vector<>> * @return int整型 */ int maxValue(vector<vector<int> >& grid) { // write code here int n = grid.size(); int m = grid[0].size(); std::vector<vector<int> > dp(n + 1, vector<int>(m + 1, 0)); for (int i = 1; i <= n; i++) { for (int j = 1; j <= m; j++) { dp[i][j] = max(dp[i - 1][j], dp[i][j - 1]) + grid[i - 1][j - 1]; } } return dp[n][m]; } };
C++ 解法, 执行用时: 7ms, 内存消耗: 920KB, 提交时间: 2021-11-07
class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param grid int整型vector<vector<>> * @return int整型 */ int maxValue(vector<vector<int> >& grid) { // write code here int n=grid.size()-1; int m=grid[0].size()-1; for(int i=1;i<=n;i++){ grid[i][0]+=grid[i-1][0]; } for(int i=1;i<=m;i++){ grid[0][i]+=grid[0][i-1]; } for(int i=1;i<=n;i++){ for(int j=1;j<=m;j++){ grid[i][j]+=max(grid[i-1][j],grid[i][j-1]); } }return grid[n][m]; } };
C++ 解法, 执行用时: 7ms, 内存消耗: 928KB, 提交时间: 2021-11-12
class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param grid int整型vector<vector<>> * @return int整型 */ int maxValue(vector<vector<int> >& grid) { // write code here int len=grid.size(); if(0==len){ return 0; } vector<long> dp(grid[0].size()+1,0); for(int i=0;i<len;i++){ for(int j=0;j<grid[0].size();j++){ dp[j+1]=max(dp[j],dp[j+1])+grid[i][j]; } } return dp[grid[0].size()]; } };
C++ 解法, 执行用时: 7ms, 内存消耗: 936KB, 提交时间: 2021-11-09
class Solution { public: int maxValue(vector<vector<int> >& grid) { // write code here for(int i = 1;i < grid.size(); ++i){ grid[i][0] += grid[i-1][0]; } for(int j = 1;j < grid[0].size(); ++j){ grid[0][j] += grid[0][j-1]; } for(int i = 1;i < grid.size(); ++i) for(int j = 1;j < grid[0].size(); ++j){ grid[i][j] += max(grid[i-1][j], grid[i][j-1]); } return grid[grid.size()-1][grid[0].size()-1]; } };