key:
用贪心法。由于一定要包含一个值, 从当前位置考虑,要得到最大值,要么加上前面的,要么不加前面的。
dp[i] = num[i] + dp[i-1] > 0? dp[i-1] : 0;
int maxSubArray(int A[], int n) {
vector<int> dp(n);
dp[0] = A[0];
int res = dp[0];
for(int i = 1; i < n; i++){
dp[i] = A[i] + (dp[i-1] < 0? 0: dp[i-1]);
res = max(dp[i],res);
}
return res;
}
本文介绍了一种使用动态规划方法解决最大子数组和问题的算法。通过贪心策略决定是否继承前一个状态来达到全局最优解。代码示例清晰地展示了如何通过迭代更新状态变量以获得最终结果。
372

被折叠的 条评论
为什么被折叠?



