分治策略
https://blog.csdn.net/qq_43656233/article/details/105086964
动态规划
- 数组b[i]表示从任意位置开始,到i位置的最大子段和
- b[i] = max(b[i - 1] + a[i], a[i])即为动态规划方程
#include<iostream>
#include<algorithm>
using namespace std;
int MaxSum(int a[], int n)
{
int sum = 0, b[1050];
memset(b, 0, sizeof(b)); // 全部归0
for (int i = 1; i <= n; ++i)
{
b[i] = max(b[i - 1] + a[i], a[i]);
if (sum < b[i])
{
sum = b[i];
}
}
return sum;
}
int main()
{
int n, a[1050];
cin >> n;
for (int i = 1; i <= n; ++i)
{
cin >> a[i];
}
cout << MaxSum(a,n) << endl;
return 0;
}