Permutations

来源:互联网 发布:swfobject.js 官网 编辑:程序博客网 时间:2024/06/07 05:30

Given a collection of distinct numbers, return all possible permutations.

For example,
[1,2,3] have the following permutations:
[1,2,3], [1,3,2], [2,1,3], [2,3,1],[3,1,2], and [3,2,1].


看完一遍题目应该就知道使用回溯算法,不过有个针对数组使用回溯的技巧,就是用swap函数来调换次序。


class Solution {public:    vector<vector<int>> permute(vector<int>& nums) {        vector<vector<int>> result;        ppp(nums,0,result);        return result;    }    void ppp(vector<int>& nums,int begin,vector<vector<int>>& result)    {        if(begin >=nums.size())        {            result.push_back(nums);            return;        }        for(int i(begin);i<nums.size();++i)        {            swap(nums[begin],nums[i]);            ppp(nums,begin+1,result);            swap(nums[begin],nums[i]);        }    }};


0 0