#include<iostream>
using namespace std;
bool NoInput = false;
int find(int *a, int size) {
if ((a == nullptr) || (size <= 0))
{
NoInput = true;
return 0;
}
int nCursum = 0;
int nMaxsum = 0;
for (int i = 0; i < size; ++i) {
if (nCursum <= 0)
nCursum = a[i];
else
nCursum = nCursum + a[i];
if (nCursum > nMaxsum)
nMaxsum = nCursum;
}
return nMaxsum;
}
int main() {
int a[10000];
int i = 0;
int tmp;
while (cin >> tmp)
{
a[i] = tmp;
i++;
}
cout << find(a, i);
return 0;
}
本文介绍了一个使用C++实现的寻找数组中最大子序列和的算法。该算法首先检查输入数组是否为空或大小是否小于等于0,如果是,则返回0并标记没有输入。然后,算法遍历整个数组,通过动态规划的方式计算当前子序列的和,并更新最大子序列的和。最后,算法返回找到的最大子序列和。
2263

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



