#include<iostream>
using namespace std;
void manlifa(int a[],int n)
{
int maxsum=0;
for(int i=0;i<n;i++)
{
int sum=0;
for(int j=i;j<n;j++)
{
sum+=a[j];
if(sum>maxsum)
maxsum=sum;
}
}
cout<<"蛮力法:"<<"最大子段和为:"<<maxsum<<endl;
}
void dongtaiguihuafa(int a[],int n)
{
int b[n];
int maxsum=0;
b[0]=a[0];
for(int i=1;i<n;i++)
{
if(b[i-1]>0)
b[i]=b[i-1]+a[i];
else
b[i]=a[i];
}
for(int j=0;j<n;j++)
{
if(b[j]>maxsum)
maxsum=b[j];
}
cout<<"动态规划法:"<<"最大子段和为:"<<maxsum<<endl;
}
int main()
{
int n;
cin>>n;
int a[n];
int w=0;
for(int i=0;i<n;i++)
{
cin>>a[i];
if(a[i]<0)
w++;
}
if(w==n)
cout<<"子段和为0"<<endl;
else
{
manlifa(a,n);
dongtaiguihuafa(a,n);
}
return 0;
}
