全排列问题:
(1)将字符串分为二部分,第一部分是字符串的第一个字符,第二部分是除第一个字符以外的其他字符;
(2) 将字符串的第一部分与第二部分的字符依次进行交换,逐个生成全排列;
class Solution {
public:
vector<vector<int>> permute(vector<int>& nums) {
vector<vector<int>> res;
permution(res,nums,0);
return res;
}
void permution(vector<vector<int>>& res,vector<int>& nums,int pos)
{
if(pos==nums.size()-1)
res.push_back(nums);
else
{
for(int i=pos;i<nums.size();i++)
{
int temp=nums[pos];
nums[pos]=nums[i];
nums[i]=temp; //change(nums[pos],nums[i]);
permution(res,nums,pos+1);
temp=nums[pos];
nums[pos]=nums[i];
nums[i]=temp; //回溯,change(nums[pos],nums[i]);
}
}
}
};