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];
}
}