我编写了此函数,但它仅适用于非负整数。
int is_sum(int x, int a[], int n)
{
if (x == 0)
return 1;
if (n==0)
return 0;
return is_sum(x-a[n-1], a, n-1) || is_sum(x, a, n-1);
}
如何使它在负整数上起作用,如何跳入2?
int is_sum(int x, int a[], int n)
{
if (x == 0)
return 1;
if (n==0)
return 0;
return is_sum(x-a[n-1], a, n-1) || is_sum(x, a, n-1);
}
答案 0 :(得分:2)
尝试以下解决方案:
int isSubsetSum(int a[], int n, int sum)
{
if (sum == 0)
return 1;
if (n <= 0)
return 0;
return isSubsetSum(a, n-1, sum) ||
isSubsetSum(a, n-2, sum-a[n-1]);
}