C中的最大连续子数组

问题描述 投票:0回答:1

问题是找到最大连续子数组和;我得到0作为输出,在某些情况下是一个随机数(我检查是否超出数组范围,但一切似乎都很好)。

我在堆栈溢出中看到了类似的问题,但其中大多数是用于较小的输入和其他编程语言的。

这是我的代码:

int maxSubArray(const int* A, int n1) 
{
    int i,j,max[n1],L;

    for (i=0;i<n1-1;i++)
    {    
        int sum=A[i]+A[i+1];
        max[i]=sum;
        for(j=i+1;j<n1-1;j++)
        {
            sum=sum+A[j+1];
            if(sum>max[i])
            {
                max[i]=sum;
            }
        }
    }

    for(i=1;i<n1;i++)
    {  
        L=max[0];
        if(max[i]>L)
        {
            L=max[i];
        }
    }

    return(L);
}

[请帮助我查找我的代码有什么问题。

c arrays
1个回答
0
投票
  • OP确实要对至少2个条目求和(而不是0或1)。
  • L = max [0]必须在第二个外部循环之前(在该循环中,我们确定哪个条目最大)。
  • 第二个外循环进入一个条目太远,因为未定义最后一个条目(因为有2个条目规则)
© www.soinside.com 2019 - 2024. All rights reserved.