LeetCode: Combinations

LeetCode: Combinations

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],
]

地址:https://oj.leetcode.com/problems/combinations/
算法:递归搞定。$\binom{n}{k}=\binom{n-1}{k}+\binom{n-1}{k}$。代码:
 1 class Solution {  2 public:  3     vector<vector<int> > combine(int n, int k) {  4         if(n < 1 || k < 1)  return vector<vector<int> > ();  5         return combineCore(n, k);  6  }  7     vector<vector<int> > combineCore(int n,int k){  8         vector<vector<int> > result;  9         if(k <= 0){ 10             result.push_back(vector<int>()); 11             return result; 12  } 13         if(n <= k){ 14             vector<int> temp; 15             for(int i = 1; i <= n; ++i) 16  temp.push_back(i); 17  result.push_back(temp); 18             return result; 19  } 20         result = combineCore(n-1, k-1); 21         for(int j = 0; j < result.size(); ++j){ 22  result[j].push_back(n); 23  } 24         vector<vector<int> > temp = combineCore(n-1,k); 25  result.insert(result.end(),temp.begin(),temp.end()); 26         return result; 27  } 28 };

 

你可能感兴趣的:(LeetCode: Combinations)