EdmondFrank's 时光足迹

この先は暗い夜道だけかもしれない それでも信じて進むんだ。星がその道を少しでも照らしてくれるのを。
或许前路永夜,即便如此我也要前进,因为星光即使微弱也会我为照亮前途。
——《四月は君の嘘》

我的算法天梯之路之-最大子阵列

我的算法天梯之路之-最大子阵列

在一个数组中找出和最大的连续几个数。(至少包含一个数)
例如:
数组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

示例代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
 #include <stdio.h>
 #define N 1001
 int maxsum(int a[],int n){
    int sum = a[0];
    int b = 0;
    for (int i = 0;i < n;i++){
        if(b>=0) b+=a[i]; else b=a[i];
        if(b>sum)
        sum = b;
    }
    return sum;
 }
 int main(){
    int n,a[N];
    scanf("%d",&n);
    for(int i=0;i<n;i++)
    scanf("%d",&a[i]);

    printf("%d",maxsum(a,n));
    return 0;
 }