算法刷题 DAY42

416.分割等和子集

bool canPartition(int* nums, int numsSize){
    
    int sum=0;
    int* dp=(int*)calloc(20500,sizeof(int));
    //dp[j]:容量为j的背包(子集)能装多大容量物品
    //1 <= nums.length <= 200;1 <= nums[i] <= 100→j最大为20000
    
    //(物品重量是离散的,如1,3,10 容量为12 则最多装11
    for(int i=0;i=nums[i];j--){
            //背包:j>=nums[i]:重为nums[i]的物品至少拿重为nums[i]的背包来装
            dp[j]=fmax(dp[j],dp[j-nums[i]]+nums[i]);//nums[i]既是物品重量也是物品价值
        }
    }

    return dp[target]==target;

}

你可能感兴趣的:(算法,数据结构,leetcode,c语言,c++)