这将会是一个系统性的算法学习专栏,编程语言为C++,适用于刚开始学算法的学生和博友,建议需要的朋友收藏订阅,是免费的,希望对大家能够有所帮助。

求最大子序列和:
- 如果前面的序列为正数,后面紧接着出现一个最大子序列,那这个最大子序列加上一个相邻的正数数列才会是最大子序列。
- 要注意如果全为负数,那么最小的那个负数就是最大的子序列和
#include<iostream>
#include<bits/stdc++.h>
#include<cstdio>
using namespace std;
int n;
int main()
{
scanf("%d", &n);
long long valmax = 0;
long long val = 0;
int valmin = 0;
while(n--)
{
int x;
scanf("%d", &x);
val += x;
if (valmax < val)
{
valmax = val;
}
else if (val < 0)
{
if (valmin == 0)
{
valmin = val;
}
else if (valmin < val)
{
valmin = val;
}
val = 0;
}
}
if (valmax == 0)
{
printf("%d", valmin);
}
else
{
printf("%lld", valmax);
}
return 0;
}
C++实现最大子序列和:针对正负数序列的算法教程
本文介绍了使用C++编写的算法,解决如何在给定正负数序列中找到最大子序列和的问题,特别强调了处理全为负数的情况。
2614

被折叠的 条评论
为什么被折叠?



