求数组子数组和的最大值 (线性算法)

以下是我写的关于一个数组求子数组和的最大值的C语言程序的代码,个人认为是线性的,但并不是很确定,求指导....

#include<iostream>
#define maxnum 1000
using namespace std;
int max(int list[],int length)
{
    int sum = 0;
    int i=1,j=0,l=length*(length+1)/2;
    int max = list[0];
    while(l>0)
    {
         sum=sum+list[j];
         if(sum>max)
        {
            max = sum;
        }
        j++;
        l--;
        if(j>=length)
            
        {   sum=0;
            j=i;
            
            i++;
        }
    }
    return max;
}
int main()
{
    int array[maxnum];
    int n;
    cout<<"请输入数组的长度:"<<endl;
    cin>>n;
    for(int i=0;i<n;i++)
    {
        cin>>array[i];
    }
    cout<<"数组中最大的子数组的和为:"<<max(array,n)<<endl;
    return 0;
}
原文地址:https://www.cnblogs.com/ls110220/p/3592439.html