SDUT - 3665 顺序表应用8:最大子段和之动态规划法

#include <stdio.h>
#include <stdlib.h>
int *a;
int max(int a, int b){return a > b ? a : b;}
void creat(int n){a = (int *)malloc((n + 5)*sizeof(int));}
void get(int n){for(int i = 1; i <= n; i++)scanf("%d", &a[i]);}
int maxsum(int n)
{
    int ans = 0;
    a[0] = 0;
    for(int i = 1; i <= n; i++)
    {
        if(a[i] + a[i - 1] > a[i])a[i] += a[i - 1];
        ans = max(ans, a[i]);
    }
    return ans;
}
int main()
{
    int n, ans;
    scanf("%d", &n);
    creat(n);
    get(n);
    ans = maxsum(n);
    printf("%d\n", ans);
    return 0;
}

猜你喜欢

转载自blog.csdn.net/Miracle_QSH/article/details/82420981