比如-2,11,-4,13,-5,-2;
该串最大子串为从2-4
11+(-4)+13=20
#include<stdio.h> int maxsub(int *a,int n) { int i,j; int max=0,thissum=0; for(i=0;i<n;i++) { thissum+=*(a+i); if(thissum>max) { max=thissum; } else if(thissum <0){ thissum=0; } } return max; } int main() { int a[]={-2,11,-4,13,-5,-2}; int sum=maxsub(a,6); printf("%d\n",sum); }
他的时间复杂度为O(n)