class Solution {
    //两重for循环计算
    public boolean canPartition(int[] nums) {
    
        int sum = 0;
        for(int i = 0; i < nums.length; i++) {
            sum += nums[i];
        }
        if(sum % 2 == 1) return false;
        int target = sum / 2;
        boolean[] dp = new boolean[target + 1]; //dp数组代表容量为j的背包能否恰好装满
        dp[0] = true;
        for (int i = 0; i < nums.length; i++) {
            for (int j = target; j >= nums[i]; j--) {
                
                  dp[j] = dp[j] || dp[j-nums[i]];
            
              
            }
        }
        return dp[target];

        
    }
}