Permutations

Q:全排列问题。DFS。

    vector<vector<int> > permute(vector<int> &num) {
        // Start typing your C/C++ solution below
        // DO NOT write int main() function
        vector<vector<int> > result;
        vector<int> set;
        vector<bool> bvisited(num.size());
        
        permute_aux(num,bvisited,set,result);
        return result;
        
    }
    
    void permute_aux(vector<int>& num, vector<bool>& bvisited,vector<int>& set,vector<vector<int> >& result)
    {
        if(set.size()==num.size())
        {
            result.push_back(set);
            return;
        }
        
        for(int i=0;i<num.size();i++)   //注意因为是全排列,要从0开始,挑选还没有访问过的数字
        {
            if(!bvisited[i])
            {
                set.push_back(num[i]);
                bvisited[i] = true;
                permute_aux(num,bvisited,set,result);
                set.pop_back();
                bvisited[i] = false;
            }
        }
    }

  

posted @ 2013-08-09 14:29  summer_zhou  阅读(171)  评论(0编辑  收藏  举报