这是个标准的动态规划,需要注意的是明确好dp的意义,因为是要连续数组,所以我们可以规定dp[i]一定包含i
class Solution { public: int FindGreatestSumOfSubArray(vector<int> array) { if(array.size()==1) return array[0]; int ans=array[0]; vector<int> dp(array.size(),array[0]);//dp是以i结尾的,一定包含当前的最后一个,这样我们只需要再比较一圈那个dp最大即可 for(int i=1;i<array.size();i++){ dp[i]=max(dp[i-1]+array[i],array[i]); ans=max(dp[i],ans); } return ans; } };