Partition Equal subset sum
public class PartitionEqualSubsetSum {
public static boolean Subsetsum(int nums[]) {
int n = nums.length;
int sum = 0;
for (int i = 0; i < n; i++) {
sum += nums[i];
}
if(sum%2!=0){
return false;
}
int w = sum / 2;
boolean dp[][] = new boolean[n + 1][w + 1];
for (int i = 0; i < n + 1; i++) {
dp[i][0] = true;
}
for (int i = 1; i < n + 1; i++) {
for (int j = 1; j < w + 1; j++) {
if (nums[i - 1] <= j) {
dp[i][j] = dp[i - 1][j - nums[i - 1]] || dp[i - 1][j];
} else {
dp[i][j] = dp[i - 1][j];
}
}
}
return dp[n][w];
}
public static void main(String[] args) {
int nums[] = { 1, 5, 11, 5 };
System.out.println("The array can be partitioned:"+Subsetsum(nums));
}
}
Comments
Post a Comment