题目:给出n个数字a[1] - a[n],求从ai连续到aj的和的最大。
转换方程:dp[i] = max(dp[i-1]+a[i], a[i]);
代码:
#include <cstdio>
#include <cstring>
#include <iostream>
using namespace std;
int main()
{
int n, i;
int a[10000];
int dp[10000];
int maxx;
cin>>n;
for(i = 1; i <= n; i++)
{
cin>>a[i];
}
dp[0] = 0;
maxx = a[0];
for(i = 1; i < n; i++)
{
dp[i] = max(dp[i-1]+a[i], a[i]);
maxx = max(maxx, dp[i]);
}
printf("%d\n", maxx);
return 0;
}