华为题:全排列

给定一个不含重复数字的数组 nums,输出其所有可能的全排列。

输入描述

第一行输入一个整数 n。

第二行输入 n 个整数,表示数组 nums。

输出描述

输出所有全排列,每个排列占一行,数字之间用空格分隔。

示例 1

输入

text

复制代码
3
1 2 3

输出

text

复制代码
1 2 3
1 3 2
2 1 3
2 3 1
3 1 2
3 2 1

C++ 解法

cpp

复制代码
#include <bits/stdc++.h>
using namespace std;

int n;
vector<int> nums;
vector<int> path;
vector<bool> used;

void dfs() {
    if ((int)path.size() == n) {
        for (int i = 0; i < n; i++) {
            if (i) cout << " ";
            cout << path[i];
        }
        cout << endl;
        return;
    }

    for (int i = 0; i < n; i++) {
        if (used[i]) continue;

        used[i] = true;
        path.push_back(nums[i]);

        dfs();

        path.pop_back();
        used[i] = false;
    }
}

int main() {
    cin >> n;

    nums.resize(n);
    for (int i = 0; i < n; i++) cin >> nums[i];

    used.assign(n, false);
    dfs();

    return 0;
}
相关推荐
杜 硕1 小时前
快速排序详解01
数据结构·算法·排序算法
Matlab程序猿2 小时前
【MATLAB源码-第459期】基于matlab的D-H模型与阻尼最小二乘逆运动学的六自由度机械臂五次轨迹规划及动力学前馈PD控制仿真。
人工智能·算法·matlab·d-h建模·六自由度串联机械臂
信奥卷王2 小时前
[GESP202606 六级] 满二叉树
数据结构·算法
积流成海2 小时前
用代码实现哈希计算器:Web Crypto API 实战
前端·算法·哈希算法·哈希函数·盘子工具站
Nil2082 小时前
leetcode 300最长递增子序列
算法·leetcode·职场和发展
垆边人似月.3 小时前
华为机试题 :最大数
c++·算法·华为
zhenaibo5213 小时前
如何与导师有效沟通选题?
算法
熊猫钓鱼>_>3 小时前
大学图论第 6 讲:网络流与二分图匹配——对偶性让瓶颈自己现形
开发语言·算法·面试·职场和发展·图论·校招·面经
没有钱的钱仔3 小时前
最大似然估计(MLE)通俗理解
算法·机器学习·概率论