劍指Offer-第9天 動態規劃(中等)
阿新 • • 發佈:2022-05-11
第一題
題目連結: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]; } };
執行截圖: