【问题标题】:Getting timeout error for min_sub_array_sum?min_sub_array_sum 出现超时错误?
【发布时间】:2019-11-03 23:03:03
【问题描述】:

我遇到了这种奇怪的错误,我写了一个函数来查找最小子数组和。但是,当数组的值从 1 开始到值 1 2 3 4 的大小时,这不起作用。我超时,但是 1 2 3 4 5 的相同代码给出了正确的答案。如果我在 min_sub_array 上方放置一个语句打印语句,它会为所有值提供正确的答案。当值从 0 开始到 size - 1 时,它也可以正常工作

int min_sub_array_sum(int d[], int size)
{
    for(int i = 1; i <= size; i++)
        d[i] = -d[i];

    int max_end_i = d[1], max_so_far = d[1];

    for(int i = 2; i <= size; i++)
    {
        max_end_i += d[i];

        if(max_so_far < max_end_i)
            max_so_far = max_end_i;

        if(max_end_i < 0)
            max_end_i = 0;
    }

    return (-max_so_far);
}

int main()
{
    int t;
    cin>>t;

    while(t--)
    {
        int n;
        cin>>n;

        int d[n];

        for(int i = 1; i <= n; i++)
            cin>>d[i];


        cout<<min_sub_array_sum(d, n)<<'\n';

    }
}

我应该得到 1 对应 1 2 3 4 的值。但我没有得到。

【问题讨论】:

    标签: dynamic-programming sub-array


    【解决方案1】:

    您正在访问不存在的数组 d[n] 的第 nth 索引。

    【讨论】:

      猜你喜欢
      • 2017-08-12
      • 2018-11-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-22
      • 1970-01-01
      相关资源
      最近更新 更多