1007:连续和最大子串。
O(n)时间即可完成,不需存储空间。
O(n)时间即可完成,不需存储空间。
#include<iostream>
using namespace std;
int main()
{
int n;
int max;
int sum;
bool isfirst=true;
int num;
int low;
int high;
int tmp;
int first;
int last;
cin>>n;
for(int i=0;i<n;i++)
{
cin>>num;
if(isfirst)
{
isfirst = false;
sum=num;
max = num;
low = num;
tmp = num;
high = num;
}
else
{
sum += num;
}
if(tmp==-1)
tmp = num;
if(sum>max)
{
max = sum;
low = tmp;
high = num;
}
if(sum<0)
{
sum=0;
tmp = -1;
}
if(i==0)
first = num;
if(i ==n-1)
last = num;
}
if(max < 0)
cout<<0<<" "<<first<<" "<<last;
else
cout<<max<<" "<<low<<" "<<high;
}