您的位置:首页 > 其它

最大连续子序列和(经典DP) 之 hdu 1231 最大连续子序列

2014-08-01 15:16 573 查看
//  [8/1/2014 Sjm]
/*
经典问题。。。
*/

#include <iostream>
#include <cstdlib>
#include <cstdio>
using namespace std;
const int MAX_K = 10005;
int arr[MAX_K];

int main()
{
//freopen("input.txt", "r", stdin);
//freopen("output.txt", "w", stdout);
int K;
bool Judge;
int ans, sum, tep, mybegin, myend;
while (scanf("%d", &K) && K) {
Judge = true;
for (int i = 0; i < K; ++i) {
scanf("%d", &arr[i]);
if (Judge && (arr[i] >= 0)) {
Judge = false;
}
}
if (Judge) {
printf("%d %d %d\n", 0, arr[0], arr[K - 1]);
continue;
}
ans = sum = arr[0];
mybegin = myend = tep = 0;
for (int i = 1; i < K; ++i) {
if (sum < 0) {
tep = i;
sum = 0;
}
sum += arr[i];
if (sum > ans) {
ans = sum;
mybegin = tep;
myend = i;
}
}
printf("%d %d %d\n", ans, arr[mybegin], arr[myend]);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息