zoukankan      html  css  js  c++  java
  • Permutations

    /*
        题意:给一个集合,求所有的排列
        做法:
    */
    class Solution {
    public:
        vector<vector<int> >res;int count ;
        void dfs(int A[],vector<int>num,int n,int cur){
            if(cur == n){//找到一个排列
                res.push_back(vector<int>());
                for(int i = 0 ; i < n ; i++){
                    res[count].push_back(A[i]);
                }
                count ++;
                return;
            }
            for(int i = 0 ; i < n ; i++){
                if(!i || num[i]!=num[i-1]){
                    //排除重复的情况如{1,1,1}这种
                    int c1 = 0,c2 = 0;
                    for(int j = 0 ; j <cur ; j++) if(A[j] == num[i]) c1++;
                    //统计当前集合里num[i]的个数
                    for(int j = 0 ; j <n ; j++) if(num[j] == num[i]) c2++;
                    //统计初始集合里num[i]的个数
                    if(c1<c2){
                    //当当前集合num[i]的个数小于初始集合num[i]的个数是才进行下一步搜索。
                        A[cur] = num[i];
                        dfs(A,num,n,cur+1);
                    }
                }
            }
        }
        vector<vector<int> > permute(vector<int> &num) {
            count = 0;
            int n = num.size();
            int A[n];
            dfs(A,num,n,0);
            return res;
        }
    };
  • 相关阅读:
    convert data to numeric element wise , python,pandas
    return sql ret
    kettle学习
    kettle异常
    c# + python
    mysql表是否存在
    python configparser
    pandas sql execute
    apply map applymap
    sql 2008 中不能创建数据库关系图
  • 原文地址:https://www.cnblogs.com/llei1573/p/4442487.html
Copyright © 2011-2022 走看看