一个数组有 N 个元素,求连续子数组的最大和。 例如:[-1,2,1],和最大的连续子数组为[2,1],其和为 3。
下面为C语言代码。
#include<stdio.h>
#include<string.h>
#include<stdio.h>
#include<string.h>
#include<stdbool.h>
void main()
{
int length;
scanf("%d", &length);//确定输入元素的个数
int arr[100];
for (int i = 0; i < length; i++)
{
scanf("%d", &arr[i]);//输入要判断的数组元素
}
int nCurSum = 0, nGreatestSum = 0;
for (int i = 0; i < length; ++i)
{
if (nCurSum <= 0)
{
nCurSum = arr[i];
}//如果当前的和小于或者等于0,则把遍历到的数组元素赋给当前的和。
else
{
nCurSum += arr[i];
}//否则继续把当前的和继续和后面的数组元素相加
if (nCurSum > nGreatestSum)//如果当前的和大于最大和,则更新最大和的值
{
nGreatestSum = nCurSum;
}
}
printf("%d", nGreatestSum);
}