Skip to content

Improve comments in SumOfSubset.java #5514

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 10 commits into from
Oct 5, 2024
Original file line number Diff line number Diff line change
@@ -1,9 +1,35 @@
package com.thealgorithms.dynamicprogramming;

/**
* A utility class that contains the Sum of Subset problem solution using
* recursion.
*
* The Sum of Subset problem determines whether a subset of elements from a
* given array sums up to a specific target value.
*
* Wikipedia: https://en.wikipedia.org/wiki/Subset_sum_problem
*/
public final class SumOfSubset {

private SumOfSubset() {
}

/**
* Determines if there exists a subset of elements in the array `arr` that
* adds up to the given `key` value using recursion.
*
* @param arr The array of integers.
* @param num The index of the current element being considered.
* @param key The target sum we are trying to achieve.
* @return true if a subset of `arr` adds up to `key`, false otherwise.
*
* This is a recursive solution that checks for two possibilities at
* each step:
* 1. Include the current element in the subset and check if the
* remaining elements can sum up to the remaining target.
* 2. Exclude the current element and check if the remaining elements
* can sum up to the target without this element.
*/
public static boolean subsetSum(int[] arr, int num, int key) {
if (key == 0) {
return true;
Expand All @@ -14,7 +40,6 @@ public static boolean subsetSum(int[] arr, int num, int key) {

boolean include = subsetSum(arr, num - 1, key - arr[num]);
boolean exclude = subsetSum(arr, num - 1, key);

return include || exclude;
}
}