【洛谷 P1706】全排列问题 题解(全排列)

简介: 该问题要求按字典序输出从1到n的所有不重复排列。输入为整数n,输出为每行一个的数字序列,每个数字占5个宽度。样例输入3,输出6行全排列。代码使用C++,通过`next_permutation`函数生成所有排列。注意n的范围是1到9。

全排列问题

题目描述

按照字典序输出自然数 $1$ 到 $n$ 所有不重复的排列,即 $n$ 的全排列,要求所产生的任一数字序列中不允许出现重复的数字。

输入格式

一个整数 $n$。

输出格式

由 $1 \sim n$ 组成的所有不重复的数字序列,每行一个序列。

每个数字保留 $5$ 个场宽。

样例 #1

样例输入 #1

3

样例输出 #1

1    2    3
    1    3    2
    2    1    3
    2    3    1
    3    1    2
    3    2    1

提示

$1 \leq n \leq 9$。

思路

直接输出全排列。

AC代码

#include <iostream>
#include <vector>
#include <algorithm>
#include <iomanip>
#define AUTHOR "HEX9CF"
using namespace std;

int main()
{
   
    int n;
    vector<int> v;
    cin >> n;
    for (int i = 1; i <= n; i++)
    {
   
        v.push_back(i);
    }
    do
    {
   
        vector<int>::iterator it = v.begin();
        for (; it != v.end(); it++)
        {
   
            cout << setw(5) << *it;
        }
        cout << endl;
    } while (next_permutation(v.begin(), v.end()));
    return 0;
}
目录
相关文章
|
1月前
|
Java
leetcode-46:全排列
leetcode-46:全排列
27 1
|
8月前
|
测试技术
代码随想录Day24 LeetCode T491 递增子序列 LeetCode T46 全排列 LrrtCode T47 全排列II
代码随想录Day24 LeetCode T491 递增子序列 LeetCode T46 全排列 LrrtCode T47 全排列II
25 1
|
1月前
|
Java
leetcode-47:全排列 II
leetcode-47:全排列 II
25 0
|
7月前
|
C++
c++力扣题目全排列
c++力扣题目全排列
|
11月前
蓝桥杯AcWing 题目题解 - 递归与递推
蓝桥杯AcWing 题目题解 - 递归与递推
|
11月前
|
人工智能 移动开发 机器人
蓝桥杯AcWing 题目题解 - 二分与前缀和、差分
蓝桥杯AcWing 题目题解 - 二分与前缀和、差分
110 0
|
12月前
|
机器学习/深度学习 算法 安全
LeetCode - #47 全排列 II
不积跬步,无以至千里;不积小流,无以成江海,Swift社区 伴你前行。如果大家有建议和意见欢迎在文末留言,我们会尽力满足大家的需求。
leetcode:46.全排列
给定一个没有重复数字的序列,返回其所有可能的全排列。
38 0
leetcode:47.全排列 II
给定一个可包含重复数字的序列,返回所有不重复的全排列。
38 0