最大子段和问题(蛮力法和动态规划法)

#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;
}

最大子段和问题(蛮力法和动态规划法)