Получение Runtime Ошибка в реализации DP задачи: «Разделение массива на k групп с сохранением минимума максимальной суммы» - PullRequest
0 голосов
/ 28 марта 2020

Я столкнулся с проблемой, в которой массив с N элементами должен быть сгруппирован в число «K» смежных подмассивов или групп, так что максимум суммарных значений среди всех групп минимизирован. Например: массив - 1 2 3 4 5 и группы = 3; тогда группы будут {1,2,3}, {4} & {5}, а максимальное значение будет 1 + 2 + 3 = 6.

Я попытался решить этот вопрос с помощью dp.The созданная мной функция выглядит следующим образом:

int minimise(int arr[],int dp[][1001],int ind,int n,int val,int k,int sum){
    int i,ans1=INT_MAX,ans,val1;

    if(k==0){
        return sum;
    }
    if(dp[ind][k] != 0){
        return max(val,dp[ind][k]);
    }

    for(i=ind;i<n-1;i++){
        val1=arr[i+1];
        sum-=arr[i];
        k,val;
        if(k>n-1-i)break;
        dp[i][k]=minimise(arr,dp,i+1,n,val1,k-1,sum);
        int p=dp[i][k];
        ans=max(val,dp[i][k]);
        ans1=min(ans1,ans);
        val+=val1;
    }
    return ans1;
}

Первоначально значения были переданы как: ind = 0; n = 0; val = arr [0]; k = no.ofgroups-1; sum = сумма все элементы массива.

Это работает для примеров, которые я вставил, но выдает ошибку выполнения (SIGSEGV) при отправке. Пытался уменьшить размер dp [] [], все равно не работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...