day9
1.剑指 Offer 42. 连续子数组的最大和
dp数组:dp[i]是指以i结尾的连续子数组的最大和
res是在dp[0]--dp[i]里找到最大值
1 class Solution { 2 public: 3 int dp[100001]; 4 int maxSubArray(vector<int>& nums) { 5 int n = nums.size(); 6 int res = dp[0] = nums[0]; 7 for(int i = 1;i < n;i ++){ 8 dp[i] = max(dp[i - 1] + nums[i],nums[i]); 9 res = max(res,dp[i]); 10 } 11 return res; 12 } 13 };
2.剑指 Offer 47. 礼物的最大价值
1 class Solution { 2 public: 3 int dp[201][201]; 4 int maxValue(vector<vector<int>>& grid) { 5 int m = grid.size(),n = grid[0].size(); 6 dp[0][0] = grid[0][0]; 7 for(int i = 0;i < m;i ++){ 8 for(int j = 0;j < n;j ++){ 9 if(i - 1 >= 0 && j - 1 >= 0) 10 dp[i][j] = max(dp[i - 1][j] + grid[i][j],dp[i][j - 1] + grid[i][j]); 11 else if(i - 1 >= 0) 12 dp[i][j] = dp[i - 1][j] + grid[i][j]; 13 else if(j - 1 >= 0) 14 dp[i][j] = dp[i][j - 1] + grid[i][j]; 15 } 16 } 17 return dp[m - 1][n - 1]; 18 } 19 };

浙公网安备 33010602011771号