最大子集和

来源:互联网 发布:英语背诵材料推荐知乎 编辑:程序博客网 时间:2024/04/29 03:01

        采用动态规划和分治。

      

#include<stdlib.h>#include<stdio.h>#include<math.h>/*double maxadd(double *shu,int from,int to){if(to==from)  return shu[to];int middle=(from+to)/2;double m1=maxadd(shu,from,middle);double m2=maxadd(shu,middle+1,to);int i;int left=shu[middle],now=shu[middle];for(i=middle-1;i>=from;i--){now+=shu[i];left=max(now,left);}int right=shu[middle+1];now=right;for(i=middle+2;i<=to;i++){ now+=shu[i]; right=max(now,right);}double m3=left+right;return max(m1,m2,m3);}*/ //max函数自己写吧int main(){int a[9]={-1,1,2,4,-7,9,3,-4,-2};int sum=a[0];int max=a[0];for(int i=1;i<9;i++){  if((sum+a[i])>a[i])//sum>0  sum=sum+a[i];  else      sum=a[i];  if(sum>max)   max=sum;}printf("max sum is:%d\n",max);}

0 0