416. Partition Equal Subset Sum

来源:互联网 发布:湖北金融数据网 编辑:程序博客网 时间:2024/05/01 16:16
public class Solution {    public boolean canPartition(int[] nums) {       int sum=0;       for(int num:nums)       {           sum+=num;       }       if(sum%2==1)           return false;       sum/=2;       boolean[][] dp=new boolean[nums.length+1][sum+1];//dp[i][j]表示前i个元素 能否形成和为j       dp[0][0]=true;       for(int i=1;i<nums.length+1;i++)       {           dp[i][0]=true;       }       for(int i=1;i<sum+1;i++)       {           dp[0][i]=false;       }       for(int i=1;i<nums.length+1;i++)       {           for(int j=1;j<sum+1;j++)           {               dp[i][j]=dp[i-1][j];               if(j>=nums[i-1])               {                   dp[i][j]=dp[i][j]||dp[i-1][j-nums[i-1]];               }           }       }       return dp[nums.length][sum];    }}
public class Solution {    public boolean canPartition(int[] nums) {       int sum=0;       for(int num:nums)       {           sum+=num;       }       if(sum%2==1)           return false;       sum/=2;       boolean[] dp=new boolean[sum+1];//dp[j] 能否形成和为j       dp[0]=true;       for(int i=1;i<nums.length+1;i++)       {           for(int j=sum;j>=0;j--)           {               if(j>=nums[i-1])               {                   dp[j]=dp[j]||dp[j-nums[i-1]];               }           }       }       return dp[sum];    }}
0 0