416分割等和子集求助
516
2023.01.18
发布于 未知归属地

大佬们有没有告诉我为什么不对啊,鄙人不才找了好久也没找到错误
bool canPartition(int* nums, int numsSize){
int sum=0;
for(int i=0;i<numsSize;i++){
sum+=nums[i];
}
if(sum%2!=0){
return false;
}else{
sum/=2;
int dp[numsSize][sum+1];
int i,j,k;
for(i=0;i<numsSize;i++){
dp[i][0]=0;
}
for(i=nums[0];i<=sum;i++){
dp[0][i]=nums[0];
}
for(i=1;i<numsSize;i++){
for(j=1;j<=sum;j++){
if(j-nums[i]>=0)
dp[i][j]=max(dp[i-1][j],dp[i-1][j-nums[i]]+nums[i]);
else
dp[i][j]=dp[i-1][j];
}
}
if(dp[numsSize-1][sum]==sum)
return true;
return false;
}
}

int max(int a,int b){
if(a>b)
return a;
return b;
}

评论 (4)