2017-04-17 31 views

回答

1

您可以使用此功能:

void printSets(int N, int Cardinality) 
{ 
     std::vector<int> nums; 
     helper(nums, 0, 0, N, Cardinality);  
} 

使用輔助函數:

void helper(std::vector<int> &nums, int size, int index, int max, int cardinality) 
{ 
     if (size == cardinality) //SET IS READY TO PRINT (base case)         
     { 
      for (int k = 0; k < cardinality; ++k) 
        std::cout<< nums[k] << " "; 
      std::cout << std::endl; 
      return; 
     } 
     for (int i = index; i < max+1; ++i) //WE LOOP THROUGH THE SPACES LEFT    
     { 
      nums.push_back(i); 
      helper(nums, size+1, i+1, max, cardinality); //WE NEST AS MANY LOOPS AS THE CARDINALITY 
      nums.pop_back(); 
     } 
} 
+0

如果你問一個更好的解決方案,你應該把這個問題部分而不是回答。 –

+0

@TonyTannous我真的沒有。我用這個做了一個項目,我完成了它。我只是好奇而已。這就是爲什麼它在一個P.S. –

相關問題