渐渐对动态规划有感觉了
class Solution {
public:
int FindGreatestSumOfSubArray(vector<int> array) {
// dp[i] 表示结尾元素为i下标的子数组的和的最大值
// 最后一个不一定就是和最大值,因为子数组不一定取到最后一个元素
// 每次取子数组时,记录下最大值
int res = -200;
std::vector<int> dp(array.size(), 0);
// 假设每个元素都为子数组时和最大
for (int i = 0; i < array.size(); ++i) {
dp[i] = array[i];
}
for (int i = 0; i < array.size(); ++i) {
dp[i] = std::max(dp[i], dp[i - 1] + array[i]);
// 以某下标i结尾的子数组,其和达到最大,记录下来
res = std::max(res, dp[i]);
}
return res;
}
};