Ошибка тайм-аута для min_sub_array_sum? - PullRequest
0 голосов
/ 21 июня 2019

Я получаю такую ​​странную ошибку, я написал функцию для поиска минимальной суммы подмассива.Но это не работает, когда значения массива начинаются с 1 до размера для значения 1 2 3 4. Я получаю тайм-аут, но тот же код для 1 2 3 4 5 дает правильный ответ.Если я поставлю оператор print для оператора выше min_sub_array, он даст правильный ответ для всех значений.Это также прекрасно работает, когда значения начинаются с 0 до размера - 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. Но я не получаю.

1 Ответ

1 голос
/ 25 июня 2019

Вы получаете доступ к nth индексу массива d [n] , который не существует.

...