我实现的子集和算法:子集和实施
SUBSET SUM(X[1 .. n], T):
if T = 0
return T RUE
else if T < 0 or n = 0
return FALSE
else
return SUBSET SUM(X[2 .. n], T) ∨ SUBSET SUM(X[2 .. n], T − X[1])
请帮我在哪能通过减少阵列X [2 ... N]递归时?
这是我写的代码,它会导致段故障:
#include <stdio.h>
int subsetsum(int a[], int sum, int size)
{
if(sum==0)
return 1;
else if (sum<0 || size <0)
return 0;
else
return (subsetsum(a+1 , sum, size-1) || subsetsum(a+1, sum - *a, size-1));
}
`
int main(int argc, char **argv)
{
int a[]={2,4,1,3,5},x;
x=subsetsum(a,6,5);
printf("%d",x);
return 0;
}
请出示你至今创作并哪儿是你坚持的代码。 – jrok
以下是代码: http://pastebin.com/mxg97e4x 给出分段错误。 – hashinclude
C或C++。选择。决定。繁荣。 – rubenvb