分割等和子集
class Solution {
public boolean canPartition(int[] nums) {
int len=nums.length;
if(len==1) return false;
int sum=0;
for(int i:nums) sum+=i;
if(sum%2!=0) return false;
sum=sum/2;
boolean[] dp=new boolean[sum+1];
//base
dp[0]=true;
for(int num:nums){
for(int i=sum;i>=num;i--){
dp[i]=dp[i]||dp[i-num];
}
}
return dp[sum];
}
}