zoukankan      html  css  js  c++  java
  • 全排列

    如果不包含重复元素,那么所有排列可以按如下方式进行打印

    #include<bits/stdc++.h>
    
    class Solution {
    public:
        void dfs(vector<int>vec, int cur, vector<vector<int>>&ans){
            if (cur == vec.size()-1){
                ans.push_back(vec);
                return;
            }
            for(int i = cur; i < vec.size(); ++i){
                //if(i != cur and vec[i] == vec[cur]) continue;
                swap(vec[i], vec[cur]);
                dfs(vec, cur + 1, ans);
            }
        }
    
        vector<vector<int>> permute(vector<int>& nums) {
            vector<vector<int>>ans;
            //sort(nums.begin(), nums.end());
            dfs(nums, 0, ans);
            return ans;
        }
    };
    

    如果包含重重元素,则需要先排序,再把重复的元素所在的区间当作一个来做

    #include<bits/stdc++.h>
    
    class Solution {
    public:
        void dfs(vector<int>vec, int cur, vector<vector<int>>&ans){
            if (cur == vec.size()-1){
                ans.push_back(vec);
                return;
            }
            for(int i = cur; i < vec.size(); ++i){
                if(i != cur and vec[i] == vec[cur]) continue;
                swap(vec[i], vec[cur]);
                dfs(vec, cur + 1, ans);
            }
        }
    
        vector<vector<int>> permuteUnique(vector<int>& nums) {
            vector<vector<int>>ans;
            sort(nums.begin(), nums.end());
            dfs(nums, 0, ans);
            return ans;
        }
    };
    
  • 相关阅读:
    类型反射和晚期绑定
    JS读写Cookie(设置、读取、删除)
    数据绑定
    解读代码
    ASP.NET vNext (一)- 基本概念和环境配置
    设计模式总结
    面向接口编程技术架构图
    搞个这样的APP要多久? (转)
    网站服务架构(转)
    jexus
  • 原文地址:https://www.cnblogs.com/crackpotisback/p/8982657.html
Copyright © 2011-2022 走看看