Combinations

来源:互联网 发布:大数据定义 编辑:程序博客网 时间:2024/04/29 21:39

Given two integers n and k, return all possible combinations ofk 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<int> path;        vector<vector<int> > res;        DFS(1, n, k, path, res);        return res;    }private:    void DFS(int cur, int n, int k, vector<int>&path, vector<vector<int> >&res)    {        // exit        if(k == 0){            res.push_back(path);            return;        }        //only k elems left        else if(n-cur+1 == k){            for(int i=cur; i<=n; ++i)                path.push_back(i);            res.push_back(path);            path.erase(path.end()-k, path.end());            return;        }        //pick cur        path.push_back(cur);        DFS(cur+1, n, k-1, path, res);        path.pop_back();                // do not pick cur        DFS(cur+1, n, k, path, res);    }};


1 0
原创粉丝点击