输入:数组a[n] 输出:该数组中和最大的连续子序列,以及该最大和 int maxsub2(int* arr,int len)...{ int i,maxsum=INT_MIN,sum=0; int beg=0,end=0,pos=0; for(i=0;i<len;++i) ...{ sum+=arr[i]; if(sum>maxsum) ...{ maxsum=sum; beg=pos; end=i; } if(sum<0) ...{ sum=0; pos=i+1; } } for(i=beg;i<=end;++i) cout<<arr[i]<<" "<<ends; cout<<endl; return maxsum;} 如果只需要输出最大自序列的和,问题还可以更简单 int maxsub3(int* arr,int len)...{ int i,maxsum=INT_MIN,sum=0; for(i=0;i<len;++i) ...{ sum=(sum>0? sum:0) +arr[i]; if(sum>maxsum) maxsum=sum; } return maxsum;} 如果将问题推广一下,求连续的K个子序列和最大 int maxsub4(int* arr,int len,int k)...{ int i,maxsum=0,sum=0; for(i=0;i<k;++i) maxsum+=arr[i]; sum=maxsum; for(i=1;i<len-k;++i) ...{ sum=sum+arr[i+k-1]-arr[i-1]; if(sum>maxsum) maxsum=sum; } return maxsum;}