首页 > 其他分享 >46. 全排列

46. 全排列

时间:2023-04-15 14:22:05浏览次数:31  
标签:排列 nums 46 res used vector path size

给定一个不含重复数字的数组 nums ,返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。

> 我的解法

class Solution {
private:
    void traversal(vector<int> &nums,vector<bool> &used,int startdex){
        if(startdex > nums.size()) return;
        if(path.size() == nums.size()){
            res.emplace_back(path);
        }
        for(int i = 0; i < nums.size(); i++){
            if(used[i] == false){
                path.emplace_back(nums[i]);
                used[i] = true;
                traversal(nums,used,i+1);
                used[i] = false;
                path.pop_back();
            }
        }
    }
public:
    vector<vector<int>> res;
    vector<int> path;
    vector<vector<int>> permute(vector<int>& nums){
        res.clear();
        path.clear();
        if(nums.size() == 1){
            res.emplace_back(nums);
            return res;
        } 
        vector<bool> used(nums.size(),false);
        traversal(nums,used,0);
        return res;
    }
};

标签:排列,nums,46,res,used,vector,path,size
From: https://www.cnblogs.com/lihaoxiang/p/17321069.html

相关文章

  • POJ 3468 A Simple Problem with Integers(线段树区间更新)
    题目地址:POJ3468打了个篮球回来果然神经有点冲动。。无脑的狂交了8次WA。。居然是更新的时候把r-l写成了l-r。。。这题就是区间更新裸题。区间更新就是加一个lazy标记,延迟标记,只有向下查询的时候才将lazy标记向下更新。其他的均按线段树的来就行。代码如下:#include<iostream>#in......
  • day29| 491+46+47
    491.递增子序列 题目简述:给你一个整数数组nums,找出并返回所有该数组中不同的递增子序列,递增子序列中至少有两个元素。你可以按任意顺序返回答案。数组中可能含有重复元素,如出现两个整数相等,也可以视作递增序列的一种特殊情况。 思路: 关键在去重利用官方题解给......
  • HDU 4628 Pieces (状压DP)
    题目地址:HDU4628这题没想到怎么快速枚举子状态。。。看了题解才知道的。用for(state=i;state>0;state=(state-1)&i)就可以了。这题的具体做法是先预处理出所有的状态是不是回文串,然后就是普通的DP了。代码如下:#include<iostream>#include<string.h>#include<math.h>......
  • Educational Codeforces Round 146 (Rated for Div. 2)
    Preface补题ing值得一提的时补这场的时候先是遇上了CF的12小时大维护,后面又遇到了评测机崩了测不了也是有点有意思的说A.Coins傻逼题,首先考虑\(2|n\)时一定有解\(x=\frac{n}{2},y=0\),否则若\(2\nmidn\and2|k\)则由裴蜀定理知此时一定无解否则\(y\)必为奇数,我们令\(x=\fra......
  • UVa 846 Steps (数学)
    846-StepsTimelimit:3.000secondshttp://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=99&page=show_problem&problem=787Onestepsthroughintegerpointsofthestraightline.Thelengthofastepmustbenonnegat......
  • UVa 10344 23 out of 5 (全排列枚举&回溯)
    10344-23outof5Timelimit:3.000secondshttp://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=24&page=show_problem&problem=1285Yourtaskistowriteaprogramthatcandecidewhetheryoucanfindanarithmetic......
  • S460N化学成分、S460N交货状态、S460N性能介绍
    一、S460N钢板简介:S460N:是欧标低合金高强度钢板,执行EN10025标准。S460N钢板生产厚度在8mm-400mm之间,具有高强度及韧性。S460N钢板牌号表示:“S”:表示欧标高钢板;“460”:表示该钢板屈服强度不小于460MPa;“N”:表示钢板交货状态。二、S460N钢板化学成分:CSiMnPSNiCrMoCuNbVTiAltN≤0.2≤......
  • python习题-排列组合序列
    【题目描述】用户输入整数n(1<=n<=26)和整数m(m<=n),然后输入n个不同的字母,请编写程序输出在这n个字母中选择m个字母的所有排列序列和组合序列。【源代码程序】importitertools#输入整数n和mn=int(input("请输入整数n(1<=n<=26):"))m=int(input("请输入整数m(m<=n):"))#输入......
  • UVA1646 圈图的匹配 Edge Case
      n个点连成一个圆,求没有公共点的边集的个数不考虑第n条边f[n]=f[n-1]+f[n-2]现在考虑第n条边ans=f[n]+f[n-2] f=[0]*10005f[1]=1f[2]=2foriinrange(3,10004):f[i]=f[i-1]+f[i-2]while1:try:n=int(input())print(f[n]+f[n......
  • 剑指offer38(Java)-字符串的排列(中等)
    题目:输入一个字符串,打印出该字符串中字符的所有排列。你可以以任意顺序返回这个字符串数组,但里面不能有重复元素。 示例:输入:s="abc"输出:["abc","acb","bac","bca","cab","cba"] 限制:1<=s的长度<=8来源:力扣(LeetCode)链接:https://leetcode.cn/pr......