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,一下子想不到。