剑指Offer-第9天 动态规划(中等)
第一题
题目链接:https://leetcode.cn/problems/lian-xu-zi-shu-zu-de-zui-da-he-lcof/
个人题解:记录一个 \(maxsum\) 和一个 \(sum\),一个存答案,一个存每一次所找的最大值。
代码:
class Solution {
public:
int maxSubArray(vector<int>& nums) {
int maxn=nums[0],sum=0;
for(int i=0;i<nums.size();i++){
sum=max(nums[i],sum+nums[i]);
maxn=max(maxn,sum);
}
return maxn;
}
};
运行截图:

第二题
题目链接:https://leetcode.cn/problems/li-wu-de-zui-da-jie-zhi-lcof/
个人题解:先开二维数组初始化行和列,然后动态规划即可
代码:
class Solution {
public:
int maxValue(vector<vector<int>>& grid) {
int m=grid.size(),n=grid[0].size();
vector<vector<int>> f(m,vector<int>(n,0));
f[0][0]=grid[0][0];
for(int i=1;i<m;i++) f[i][0]+=f[i-1][0]+grid[i][0];
for(int j=1;j<n;j++) f[0][j]+=f[0][j-1]+grid[0][j];
for(int i=1;i<m;i++){
for(int j=1;j<n;j++){
f[i][j]=max(f[i-1][j],f[i][j-1])+grid[i][j];
}
}
return f[m-1][n-1];
}
};
运行截图:


浙公网安备 33010602011771号