剑指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;
    }
};

运行截图:

image

第二题

题目链接: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];
    }
};

运行截图:

image

posted @ 2022-05-11 18:58  黑VS白-清墨  阅读(19)  评论(0)    收藏  举报