Wednesday, September 4, 2013

Combine

Given two integers n and k, return all possible combinations of k numbers out of 1 ... n.
For example,
If n = 4 and k = 2, a solution is:
[
  [2,4],
  [3,4],
  [2,3],
  [1,2],
  [1,3],
  [1,4],
]
void generate(vector<int> current_set, int i, int n,  int targetcount, vector<vector<int> > &result)
{
   if(current_set.size() == targetcount)
   {
    result.push_back(current_set);
    return;
   }

   if(i > n)
    return;

   generate(current_set, i+1, n, targetcount, result);
   current_set.push_back(i);
   generate(current_set, i+1, n, targetcount, result);
}

 vector<vector<int> > combine(int n, int k) {
        vector<vector<int> > result;
  if(n <= 0 || k <= 0)
   return result;

  vector<int> v;
  generate(v, 1, n, k, result);
  return result;
} 

No comments:

Post a Comment