代码如下,有两个,不知道怎么输出最大子序列。#includeint Maxsum(int a[],int n){ int i,j,k; int maxSum=0,curSum; for(i=0;imaxSum) maxSum=curSum; } } return maxSum;} int main(){ int n; printf("输入序列元素个数:"); scanf("%d",&n); int a[n]; printf("输入序列元素:"); for( int i;iint Maxsubsum(int a[],int Left,int Right){ int Center,i,Leftsum,Rightsum,Leftbordersum=0,Rightbordersum=0,Maxleftbordersum=0,Maxrightbordersum=0,max; //Center为中间的界线,Leftsum为递归过程中的左边最大,Rightsum为递归过程中的右边最大,Ma //xleftbordersum为中间靠左的最大,Maxrightbordersum为中间靠右的最大,max为三者最 if(Left==Right) { if(a[Left]>0) return a[Left]; else return 0; }/*基线条件*/ Center=(Left+Right)/2; Leftsum=Maxsubsum(a,Left,Center);//递归调用,分的过程 Rightsum=Maxsubsum(a,Center+1,Right);//递归调用,分的过程 for(i=Center;i>=Left;i--) { Leftbordersum+=a[i]; if(MaxleftbordersumLeftsum?Rightsum:Leftsum; max=max>(Maxleftbordersum+Maxrightbordersum)?max:Maxleftbordersum+Maxrightbordersum;//三者最大 return max;//返回值}int main(){ int n; printf("输入序列元素个数:"); scanf("%d",&n); int b[n]; printf("请输入元素:"); for(int i=0;i
举报 0