思路:先求sum,如果当前sum小于0,那么求和从下一个数开始。例如:2 3 -6 7 9 3 -2,先求和sum=2,然后sum=2+3=5,sum=2+3-6=-1<0,那么最大的sum从a[3]开始,即从7开始。
#include<iostream>
using namespace std;
int qiuhe(int a[],int n)
{
int begin=0,end=0;
int i=0;
int sum=0,max=0;
for(i=0;i<n;i++)
{
sum=sum+a[i];
if(sum<0)
{
begin=i+1;
sum=0;
i=begin;
}
if(sum>max)
{
max=sum;
end=i;
}
// cout<<begin<<' '<<end<<endl;
}
for(int m=begin;m<=end;m++)
cout<<a[m]<<' ';
cout<<endl;
return 0;
}
int main()
{
int a[100],x=0;
while(cin>>a[x])
{
x++;
}
qiuhe(a,x);
return 0;
}