求给定序列的排列个数。
class Solution {
public:
vector<vector<int>>ff;
vector<vector<int>> permute(vector<int>& nums) {
vector<int>gg;
find_ans(0,0,gg,nums);
return ff;
}
void find_ans(int step,int mark,vector<int>gg,vector<int>& nums){
if(step+1>nums.size()){
ff.push_back(gg);
return ;
}
for(int ii=0;ii<nums.size();ii++){
int text=ii;
if((mark>>ii)&1)continue;
if(step+1>gg.size())gg.push_back(nums[ii]);
else gg[step]=nums[ii];
//mark+=(1<<ii);//用位运算记录哪些点已经用过,那么就不能再用了。
find_ans(step+1,mark+(1<<ii),gg,nums);
}
}
};