文章
25
粉丝
364
获赞
8
访问
219.0k
/*
* Description: 最大连续子序列 (http://noobdream.com/DreamJudge/Issue/page/1334/)
* Author: 鱼翔浅底
* Date: 2021-02-19 08:55:45
*/
#include <cstdio>
#include <cstdlib>
using namespace std;
#define maxn 10000
//计算最大序列和
void MaxSequenceSum(long long S[], int N)
{
int start = 0, end = 0; //记录位置
int s = 0;//记录一段序列的起始位置
long long ans = S[0], tmp = 0;
for (int i = 0; i < N; i++)
{
tmp += S[i];
if (ans < tmp) //更新最大子列和
{
ans = tmp;
start = s;
end = i;
}
if (tmp < 0) //子列和为负,则重新开始累加
{
tmp = 0;
s = i + 1;//此位置元素为负,从下一个元素开始新的序列
ans = (ans < S[i]) ? S[i] : ans; //更新最大子列和
}
}
if (ans < 0)//全是负数的情况
{
ans = 0;
start = 0;
end = N - 1;
}
printf("%lld %lld %lld\n", ans, S[start], S[end]);
return;
}
int main()
{
int N;
...
登录后发布评论
暂无评论,来抢沙发