代码随想录第四十二天 | 动态规划

今天是第四十二天,是动态规划中的背包问题

 

416. 分割等和子集

class Solution {
    public boolean canPartition(int[] nums) {
        int sum = 0;
        int n = nums.length;
        int[] dp = new int[10001];
        for(int i = 0; i< n; i++){
            sum += nums[i];
        }
        if(sum %2==1){
            return false;
        }
        int target = sum/2;

        for(int i = 0; i< n; i++){
            for(int j = target; j >= nums[i]; j--){
                dp[j] = Math.max(dp[j], dp[j-nums[i]]+nums[i]);
            }

        }
        if(dp[target] == target){
            return true;
        }
        return false;
    }
}

leetcode没有背包问题,但这道题可以用背包的思路来,这个题的模版很典型,需要背下来

背包问题非常难,希望可以学会它

posted @ 2022-11-23 11:58  小猫Soda  阅读(17)  评论(0)    收藏  举报