给定一个没有重复数字的序列,返回其所有可能的全排列。
示例:
输入: [1,2,3]
输出:
[
[1,2,3],
[1,3,2],
[2,1,3],
[2,3,1],
[3,1,2],
[3,2,1]
]
#include <iostream>
#include <vector>
#include <stdio.h>
using namespace std;
class Solution {
public:
vector<vector<int>> permute(vector<int>& nums) {
int n = nums.size();
vector<vector<int>> res;
backTrace(n,0,nums,res);
return res;
}
void backTrace(int n,
int first,
vector<int>& nums,
vector<vector<int>>& res){
if(first==n){
res.push_back(nums);
}
for(int i=first;i<n;i++){
swap(nums[i],nums[first]);
backTrace(n,first+1,nums,res);
swap(nums[i],nums[first]);
}
}
};
int main(){
vector<int> test ={1,2,3};
vector<vector<int>> res;
Solution *ps = new Solution();
res = ps->permute(test);
for(int i=0;i<res.size();i++){
vector<int>temp = res[i];
for(int j=0;j<temp.size();j++){
cout<<temp[j];
}
cout<<endl;
}
return 0;
}