编程之美---求数组的子数组之和的最大值

来源:互联网 发布:知乎日报封面 编辑:程序博客网 时间:2024/06/05 06:10

最大字段和问题,不分析了,就是一个动态规划

#include<stdio.h>#include<stdlib.h>#include<assert.h>#define max(a, b) ((a) > (b) ? (a) : (b))//设置最小整型值const int inf = 0x80000001;int getMaxSum(int *a, int n){int maxSum = inf;int curSum = 0;for(int i=0; i<n; i++){if(curSum < 0)curSum = 0; curSum += a[i];maxSum = max(curSum, maxSum);}return maxSum;}void test(){int n = 0;//printf("%d", inf);while(scanf("%d", &n) != EOF){if(n == 0) break;int *a = new int[n];for(int i=0; i<n; i++)scanf("%d", &a[i]);int ret = getMaxSum(a, n);printf("%d", ret);delete []a;}}int main(){test();return 0;}