题目描述:
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],
]
思路:直接dfs深度搜索
class Solution { public: vector<vector<int>> combine(int n, int k) { vector<vector<int>> res; vector<int> temp; dfs(res,temp,n,k,1); return res; } void dfs(vector<vector<int> >& res, vector<int>& temp, int n, int k,int p) { if(temp.size() == k) {//边界条件 res.push_back(temp); return; } for(int i = p; i <= n; i++) {//搜索 temp.push_back(i); dfs(res, temp, n, k, i + 1); temp.pop_back();//pop_back()为了试下一个数字 } } };