Я столкнулся с проблемой, в которой массив с 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 [] [], все равно не работает.