C中的最大和连续子数组

时间:2019-10-01 04:51:31

标签: c arrays

问题在于找到最大连续子数组总和;我的输出为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);
}

请帮助我查找代码中的问题。

2 个答案:

答案 0 :(得分:0)

  • OP确实希望对至少2个条目进行求和(而不是0或1)。
  • L = max [0]必须位于第二个外部循环之前(在该循环中,我们确定哪个条目最大)。
  • 第二个外循环进入一个条目太远,因为未定义最后一个条目(因为有2个条目规则)

答案 1 :(得分:0)

这是伪代码:

current_sum = 0

best_sum = 0

遍历数组:

如果当前总和小于当前总和+数组[i]

current_sum = current_sum + array[i]

如果最佳总和小于当前总和

best_sum = current_sum