Permutations

问题:全排列

class Solution {
public:
    void dfs(vector<int> &num,vector<int> &vec2,vector<vector<int> >&vec1,int step,int vis[])
    {
        if(step==num.size())
        {
            vec1.push_back(vec2);
            return ;
        }
        for(int i=0;i<num.size();i++)
        {
            int t=num[i];
            if(vis[i]==0)
            {
                vis[i]=1;
                vec2.push_back(t);
                dfs(num,vec2,vec1,step+1,vis);
                vec2.pop_back();
                vis[i]=0;
            }
        }
    }
    vector<vector<int> > permute(vector<int> &num) {
        vector<vector<int> > vec1;
        vector<int> vec2;
        int vis[100];
        memset(vis,0,sizeof(vis));
        dfs(num,vec2,vec1,0,vis);
        return vec1;
    }
};

  

posted @ 2014-08-06 19:39  calmound  阅读(156)  评论(0编辑  收藏  举报