在一个数组中找出和最大的连续几个数。(至少包含一个数)
例如:
数组A[] = [−2, 1, −3, 4, −1, 2, 1, −5, 4],则连续的子序列[4,−1,2,1]有最大的和6.
格式:
第一行输入一个数字n,
第二行输入A[n],最后输出最大的和。
样例1
输入:
3
1 1 -2
输出:
2
#include <stdio.h>
#include <malloc.h>
int maxsum(int a[],int n)
{
int i,sum = 0;
int max = a[0];
for(i = 0;i < n ; i++)
{
if(sum >= 0)
sum += a[i];
else
sum = a[i];
if(sum > max)
max = sum;
}
return max;
}
int main(int argc, char **argv) {
int i, n;
scanf("%d", &n);
int *a = (int *) malloc(n * sizeof(int));
for (i = 0; i < n; i++) {
scanf("%d", &a[i]);
}
int max = maxsum(a,n);
printf("%d",max);
return 0;
}