最大子阵列

在一个数组中找出和最大的连续几个数。(至少包含一个数)

例如:

数组A[] = [−2, 1, −3, 4, −1, 2, 1, −5, 4],则连续的子序列[4,−1,2,1]有最大的和6.

输入格式

第一行输入一个不超过1000的整数n。

第二行输入n个整数A[i]。

输出格式

第一行输出一个整数,表示最大的和。

样例输入

3
1 1 -2

样例输出

2
#include<iostream>
#include<cstdio>
using namespace std;
int n,a[1001];
int main(){
    scanf("%d",&n);
    for(int i=0;i<n;i++){
        scanf("%d",&a[i]);
    }
   int max=a[0];
   int sum=a[0];
   for(int i=1;i<n;i++){
    if(sum>0)
        sum+=a[i];
    else
        sum=a[i];
    if(sum>max){
        max=sum;//总是记录最大的和
    }
   }
   printf("%d",max);

}

猜你喜欢

转载自blog.csdn.net/lijunyan5/article/details/81509837