子集总和没有重复

时间:2017-12-17 17:47:46

标签: duplicates subset subset-sum

我知道如何使用递归来解决它。但问题是重复。

我每次都需要获得独特的解决方案。

有没有办法从数组中删除之前使用过的数字?

这是我的代码:

static bool isSubsetSum(int []set, int n, int sum)
{
    // Base Cases
    if (sum == 0)
        return true;
    if (n == 0 && sum != 0)
        return false;

    // If last element is greater than sum, then ignore it
    if (set[n - 1] > sum)
        return isSubsetSum(set, n - 1, sum);

    /* else, check if sum can be obtained by any of the following
       (a) including the last element
       (b) excluding the last element   */
    return isSubsetSum(set, n - 1, sum) ||
            isSubsetSum(set, n - 1, sum - set[n - 1]);
}

0 个答案:

没有答案