题意
生成一个数组的全派别
题解
用递归实现。每个位置的数字都能和它后面的所有数字交换的,一共有n!种。
代码
class Solution {
public:
vector<vector<int> > result;
void gen_permutation(int pos, vector<int> &nums)
{
if(pos == nums.size())
{
result.push_back(nums);
}
else
{
for(int i = pos; i < nums.size(); i++)
{
swap(nums[i], nums[pos]);
gen_permutation(pos + 1, nums);
swap(nums[i], nums[pos]);
}
}
}
vector<vector<int>> permute(vector<int>& nums) {
gen_permutation(0, nums);
return result;
}
};