DFS Permutations

来源:互联网 发布:阿里云如何查看发票 编辑:程序博客网 时间:2024/06/06 19:13

思想:

注意这里给定的序列不包含重复的元素。

方法一:DFS

class Solution {public:    //Permutations    void dfs(vector<vector<int>> &res, vector<int> num, vector<int> &path) {        if(path.size() == num.size()) {            res.push_back(path);            return;        }        for(int i=0; i<num.size(); i++) {            auto pos = find(path.begin(),path.end(),num[i]);            if(pos == path.end()) {                path.push_back(num[i]);                dfs(res,num,path);                path.pop_back();            }        }    }    vector<vector<int> > permute(vector<int> &num) {        vector<vector<int>> res;        vector<int> path;        dfs(res,num,path);        return res;    }};

方法二:stl的next_permutation();

class Solution {public:    //Permutations    vector<vector<int> > permute(vector<int> &num) {        vector<vector<int>> res;        sort(num.begin(),num.end());        do {            res.push_back(num);        }while(next_permutation(num.begin(), num.end()));        return res;    }};



0 0