这是个标准的动态规划,需要注意的是明确好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;
}
};
京公网安备 11010502036488号