首页 > 代码库 > LeetCode: Combinations

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