Advertisement
Farid_Mia59

subset

Nov 16th, 2019
118
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.16 KB | None | 0 0
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. void displaySubset(int subSet[], int size) {
  5. for(int i = 0; i < size; i++) {
  6. cout << subSet[i] << " ";
  7. }
  8. cout << endl;
  9. }
  10.  
  11. void subsetSum(int set[], int subSet[], int n, int subSize, int total, int nodeCount ,int sum) {
  12. if( total == sum) {
  13. displaySubset(subSet, subSize); //print the subset
  14. subsetSum(set,subSet,n,subSize-1,total-set[nodeCount],nodeCount+1,sum); //for other subsets
  15. return;
  16. }else {
  17. //displaySubset(subSet, subSize);
  18. for( int i = nodeCount; i < n; i++ ) { //find node along breadth
  19. subSet[subSize] = set[i];
  20. subsetSum(set,subSet,n,subSize+1,total+set[i],i+1,sum); //do for next node in depth
  21. }
  22. }
  23. }
  24.  
  25. void findSubset(int set[], int size, int sum) {
  26. int *subSet = new int[size]; //create subset array to pass parameter of subsetSum
  27. subsetSum(set, subSet, size, 0, 0, 0, sum);
  28. // delete[] subSet;
  29. }
  30.  
  31. int main() {
  32. freopen("in.txt","r",stdin);
  33. int n,target_sum,weights[100];
  34. cin>>n>>target_sum;
  35. for(int i=0;i<n;i++)
  36. cin>>weights[i];
  37. findSubset(weights, n,target_sum);
  38. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement