我正在使用动态问题解决。
我的C
代码如下:
int balanced_partition( int arr[] , int n){
int i,j;
int sum=0;
for(i=0;i<n;i++)
sum+=arr[i];
int p[n+1][sum+1];
for(i=0;i<n+1;i++){
for(j=0;j<sum+1;j++){
if(i==0)
p[0][j]= 0;
else if(j==0)
p[i][0]=1;
else{
if( (i-1>=0 && p[i-1][j]==1) || ( i-1>=0 && j-arr[i]>=0 && p[i-1 [j-arr[i]]==1) )
p[i][j]=1;
else
p[i][j]=0;
}
}
}
int min=INT_MAX;
int half_sum=sum/2;
for(i=half_sum;i>=0;i--)
if(p[n][half_sum-i]==1 && min >(half_sum-i) ){
min = half_sum-i;
}
return min;
}
但是我得到了数组 = [1,5] 的错误输出。我正在使用 参考问题 7 中给出的想法来解决
我在哪里做错了?