您的位置:首页 > 其它

LeetCode题解——Combinations

2015-08-26 21:32 281 查看
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],
]
backtracking is very useful. the ieda is similar to combination sum
class Solution {
public:
vector<vector<int>> combine(int n, int k) {
vector<vector<int>> ans;
vector<int> temp;
combine(1,n,k,ans,temp); //call fuction to get combination of k numbers which range is 1-n
return ans;
}
private:
void combine(int begin,int n, int k, vector<vector<int>> &ans, vector<int>& temp){
if(k==0){
ans.push_back(temp);
return;
}
//condition : n-i+1 is the range, range must greater than k
for(int i=begin;n-i+1>=k;i++){ // for the ith iteration, get the combination of i and k-1 numbers differ from i.
temp.push_back(i);
combine(i+1,n,k-1,ans,temp);// get the combination of k-1 numbers which range is(i+1,n)
temp.pop_back();
}
}
};


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: