Пример #1
0
bool  isSubsetSum(int arr[],int size,int sum)
{
if(sum == 0)
return true;
if(size == 0 && sum >=0)
return false;
if(sum >= arr[size-1])
return isSubsetSum(arr,size-1,sum);
return (isSubsetSum(arr,size-1,sum) || isSubsetSum(arr,size-1, sum-arr[size]));

}
Пример #2
0
// Returns true if there is a subset of set[] with sun equal to given sum
int isSubsetSum(int set[], int n, int sum)
{
   // Base Cases
   if (sum == 0)
     return 1;
   if (n == 0 && sum != 0)
     return 0;
 
   // 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]);
}
Пример #3
0
int isSubsetSum(double arr[], int n, double sum, double subset[], int count){
 
  int i;
  if(sum == 0) {
       printf("\n");
       quantityOfResults++;
       printf("<ul class=\"sum\" id=\"results%d\">\n", quantityOfResults);
       for(i =0; i < count; i++)
           printf("<li>%.2f</li>\n",  subset[i]);
       printf("</ul>");
       return true;
       }
  if(n < 0  && sum != 0)  return false;
 
  subset[count] =  arr[n];
  return isSubsetSum(arr, n-1, sum-arr[n], subset, count + 1)  
         + isSubsetSum(arr, n-1, sum, subset, count );
}
Пример #4
0
int main()
{
  int set[] = {3, 34,-33, 4, 12, 5, 2};
  int sum = 1;
  int n = sizeof(set)/sizeof(set[0]);
  if (isSubsetSum(set, n, sum) == true)
    printf("Found a subset with given sum");
  else
    printf("No subset with given sum");
  return 0;
}
// Driver program to test above function
int main()
{
int set[] = {3,2,4,11,5,6,4,3,45};
int sum = 25;
int n = sizeof(set)/sizeof(set[0]);
if (isSubsetSum(set, n, sum) == true)
	printf("Found a subset with given sum");
else
	printf("No subset with given sum");
return 0;
}
Пример #6
0
int main()
{
    int n,i,sum;
    printf("Input number of elements\n");
    scanf("%d",&n);
    int set[n];
    printf("Input array elements\n");
    for(i = 0; i < n;i++)
    scanf("%d",&set[i]);
    printf("Enter Sum to check\n");
    scanf("%d",&sum);
    if (isSubsetSum(set, n, sum) == 1)
     printf("Found a subset with given sum\n");
    else
     printf("No subset with given sum\n");
    return 0;
}
Пример #7
0
int main()
{
    int n,set[1000000];
    int x,i;
    scanf("%d",&n);
    for(i=0;i<n;i++)
    {
    	scanf("%d",&set[i]);
    }
    scanf("%d",&x);
    if (isSubsetSum(set, n, x) == true)
	printf("True\n");
else
	printf("False\n");

    return 0;
}
Пример #8
0
/* Driver program */
int main(int argc, char *argv[]){
 
  if(argc==3){
      int i;
      char *strNums = argv[1];
      double* set = parseNumberSet(strNums);
      if(set==NULL)
          return -1;
      int n = sizeOfArray;
      double objectiveNumber = (double)atof(argv[2]);
      double subset[n];
      isSubsetSum(set, n-1, objectiveNumber, subset, 0);
      if(quantityOfResults==0){
          printf("<div class=\"alert\"><h3>No existe una suma que resulte en %.2f, pruebe otra vez.</h3></div>", objectiveNumber);
      }
      free(set);
      return 0;
  }else{
      /*printf("Usage: %s number1,number2,... objective", argv[0]);*/
      return -1;
  }
}