C++回溯算法+剪枝

例题-全排列

给定一个不含重复数字的数组 nums ,返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。

题解

class Solution {
public:
    void dfs(vector<int> nums,vector<int>& allnum,vector<vector<int>>& res){
        if(allnum.size()==nums.size()){
            res.push_back(allnum);
            return ;
        }

        for(int i=0;i<nums.size();i++){
            if(find(allnum.begin(),allnum.end(),nums[i])==allnum.end()){
                allnum.push_back(nums[i]);
                dfs(nums,allnum,res);
                allnum.pop_back();
            }
        }
        
    }
    vector<vector<int>> permute(vector<int>& nums) {
        vector<int> allnum;
        vector<vector<int>> res;
        dfs(nums,allnum,res);
        return res;
    }
};
posted @ 2022-04-13 22:02  又一岁荣枯  阅读(84)  评论(0编辑  收藏  举报