洛谷 P1706. 全排列问题---关于next_permutation函数的使用

全排列问题

题目描述

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

输入格式

一个整数 n

输出格式

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

每个数字保留 5 个场宽。

样例 #1

样例输入 #1

3

样例输出 #1

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

提示

1n9


题解

algorithm库中的next_permutation函数可以很好解决这类排列问题
一定要记住他的使用模板

do{
        for (int i = 1; i <= n; i ++ )
            cout << a[i] << " ";
        cout << endl;
    }while (next_permutation(a + 1, a + n + 1));

c-入门必学库函数-next_permutation-CSDN博客.png
来自 https://blog.csdn.net/weixin_52115456/article/details/127626074


如果我们需要自定义排序方式

就需要自定义一个bool函数放入next_permutation里面
如图
C-中全排列函数next_permutation-用法_nextpermutation函数-CSDN博客.png
来自 https://blog.csdn.net/howardemily/article/details/68064377


本题全排列代码

#include <bits/stdc++.h>

using namespace std;

int a[20];

int main()
{
    int n;
    scanf("%d", &n);
    for (int i = 1; i <= n; i ++ ) a[i] = i;
    do{
        for (int i = 1; i <= n; i ++ )
            cout << setw(5) << a[i];
        cout << endl;
    }while (next_permutation(a + 1, a + n + 1));

    return 0;
}
posted @   MsEEi  阅读(22)  评论(0)    收藏  举报
编辑推荐:
· 记一次 .NET某固高运动卡测试 卡慢分析
· 微服务架构学习与思考:微服务拆分的原则
· 记一次 .NET某云HIS系统 CPU爆高分析
· 如果单表数据量大,只能考虑分库分表吗?
· 一文彻底搞懂 MCP:AI 大模型的标准化工具箱
阅读排行:
· 7 个最近很火的开源项目「GitHub 热点速览」
· 博客园2025新款「AI繁忙」系列T恤上架
· DeepSeekV3:写代码很强了
· 记一次 .NET某固高运动卡测试 卡慢分析
· Avalonia跨平台实战(二),Avalonia相比WPF的便利合集(一)
点击右上角即可分享
微信分享提示