Professional Documents
Culture Documents
EXPERIMENT: 2.2
2. objective
find whether or not there exists any subset of the given set .
3. Algorithm
v. subset[i][0] = true as sum of {} = 0 vi. subset[0][j] = false as with no elements we can get
no sum
class Solution {
static Boolean isSubsetSum(int N, int arr[], int sum) {
int dp[][] = new int[N][sum+ 1];
for (int row[] : dp)
Arrays.fill(row, -1);
return subsetSumUtil(N - 1, sum, arr, dp);
}
static boolean subsetSumUtil(int ind, int target, int[] arr, int[][] dp) {
if (target == 0)
return true;
if (ind == 0)
return arr[0] == target;
if (dp[ind][target] != -1)
return dp[ind][target] == 0 ? false : true;
boolean notTaken = subsetSumUtil(ind - 1, target, arr, dp);
boolean taken = false;
if (arr[ind] <= target)
taken = subsetSumUtil(ind - 1, target - arr[ind], arr, dp);
dp[ind][target] = notTaken || taken ? 1 : 0;
return notTaken || taken;
}
}
output
DEPARTMENT OF
COMPUTER SCIENCE & ENGINEERING
Learning Outcomes:-
4. Learnt about how to implement subset sum problem using dynamic programming.