47.全排列 II
class Solution {
public:
vector<int>used;
vector<int>cur;
vector<int>v;
vector<vector<int>>res;
void bt() {
if(cur.size()==v.size()){
res.push_back(cur);return;
}
for(int i=0;i<v.size();i++){
if(used[i]==1)continue;
if(i>0&&v[i]==v[i-1]&&used[i-1]==0)continue;
used[i]=1;
cur.push_back(v[i]);
bt();
cur.pop_back();
used[i]=0;
}
}
vector<vector<int>> permuteUnique(vector<int>& nums) {
v=nums;sort(v.begin(),v.end());
used=vector<int>(v.size(),0);
bt();
return res;
}
};
如何剪枝同一层使用过的:&&used[i-1]==0
,一下子想不到。