1143. 最长公共子序列 class Solution { public: int longestCommonSubsequence(string text1, string text2) { int m=text1.size(); int n=text2.size(); vector<vector<int>> f(m+1,vector<int>(n+1,0)); for(int i=1;i<=m;i++){ for(int j=1;j<=n;j++){ if(text1[i-1]==text2[j-1]){ f[i][j]=f[i-1][j-1]+1; } else { f[i][j]=max(f[i-1][j],f[i][j-1]); } } } return f[m][n]; } }; 1035. 不相交的线 class Solution { public: int maxUncrossedLines(vector<int>& nums1, vector<int>& nums2) { int m = nums1.size(); int n = nums2.size(); vector<vector<int>> f(m+1,vector<int>(n+1,0)); for(int i=1;i<=m;i++){ for(int j=1;j<=n;j++){ if(nums1[i-1]==nums2[j-1]) f[i][j]=f[i-1][j-1]+1; else f[i][j] = max(f[i-1][j],f[i][j-1]); } } return f[m][n]; } }; 53. 最大子数组和 class Solution { public: int maxSubArray(vector<int>& nums) { int n=nums.size(); if(n==0) return 0; int f[n+2]; f[0]=nums[0]; int res = nums[0]; for(int i=1;i<n;i++){ f[i]=max(f[i-1]+nums[i],nums[i]); res=max(f[i],res); } return res; } };