HDU 1231 最大连续子序列
动态规划
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <cctype>
#include <cmath>
#include <algorithm>
#include <vector>
#include <queue>
#include <stack>
#include <map>
using namespace std;
const int inf = 0x3f;
const int INF = 0x3f3f3f3f;
const int maxn = 105;
int n, a[10005], b[10005];
int main()
{
while(scanf("%d", &n) && n)
{
for(int i = 0; i < n; i++)
{
scanf("%d", &a[i]);
}
b[0] = a[0];
int ans = a[0], s = 0, t = 0, e = 0;
for(int i = 1; i < n; i++)
{
b[i] = max(a[i], a[i]+b[i-1]);
if(b[i] == a[i])
{
t = i;
}
//printf("i = %d, %d
", i, b[i]);
if(b[i] > ans)
{
s = t; e = i; ans = b[i];
}
}
if(ans >= 0)
printf("%d %d %d
", ans, a[s], a[e]);
else
printf("%d %d %d
", 0, a[0], a[n-1]);
}
return 0;
}
动态规划 挺好的 教程