news 2026/6/9 22:57:15

csp信奥赛C++标准模板库STL案例应用21

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
csp信奥赛C++标准模板库STL案例应用21

csp信奥赛C++标准模板库STL案例应用21

next_permutation实践

题目描述

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

输入格式

一个整数n nn

输出格式

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

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

输入输出样例 1
输入 1
3
输出 1
1 2 3 1 3 2 2 1 3 2 3 1 3 1 2 3 2 1
说明/提示

1 ≤ n ≤ 9 1 \leq n \leq 91n9

核心思路

  1. 初始化序列:创建包含1到n的有序向量
  2. 生成排列:利用next_permutation按字典序生成所有排列
  3. 格式输出:使用setw控制输出格式满足题目要求
时间复杂度:O(n! × n)
  • 共有n!个排列
  • 每个排列输出需要O(n)时间
空间复杂度:O(n)
  • 只使用了一个大小为n的向量

代码实现

#include<bits/stdc++.h>// 包含所有标准库头文件(竞赛常用写法)usingnamespacestd;intn;// 全局变量,存储输入的nintmain(){cin>>n;// 读入nvector<int>a;// 创建整型向量a,用于存储当前排列// 初始化向量a为[1, 2, ..., n]for(inti=1;i<=n;i++){a.push_back(i);// 将1到n依次加入向量}// 使用do-while循环生成所有排列// do-while保证至少执行一次,先输出初始排列do{// 输出当前排列for(inti=0;i<n;i++){// 使用setw(5)设置输出宽度为5个字符,右对齐cout<<setw(5)<<a[i];}cout<<endl;// 每个排列后换行// next_permutation将向量a变为字典序的下一个排列// 当没有下一个排列时返回false,循环结束}while(next_permutation(a.begin(),a.end()));return0;}

功能分析

1.输入处理
  • 读取一个整数n,范围1≤n≤9
  • 较小的n值保证了算法在可接受时间内完成(9! = 362880)
2.排列生成机制
  • next_permutation原理:按字典序生成下一个排列
  • 初始状态:向量a为升序排列[1,2,…,n]
  • 终止条件:当序列变为降序排列时,函数返回false
  • 特性:自动处理重复元素(本题中无重复数字)
3.输出格式化
  • 场宽控制setw(5)确保每个数字占5个字符宽度
  • 对齐方式:默认右对齐,符合题目要求
  • 行格式:每个数字后无额外空格,一行一个排列
4.算法特点
  • 简洁性:利用标准库函数,代码量少
  • 正确性:按字典序生成所有排列,与题目要求一致
  • 通用性:适用于任何可比较的元素类型

示例流程(n=3):

  1. 初始状态:[1,2,3]
  2. 第一次循环:输出"1 2 3"
  3. next_permutation生成:[1,3,2]
  4. 第二次循环:输出"1 3 2"
  5. 依此类推,直到[3,2,1]后结束

完整系列资料,请查看专栏:《csp信奥赛C++标准模板库STL》

https://blog.csdn.net/weixin_66461496/category_13108077.html

各种学习资料,助力大家一站式学习和提升!!!

#include<bits/stdc++.h>usingnamespacestd;intmain(){cout<<"########## 一站式掌握信奥赛知识! ##########";cout<<"############# 冲刺信奥赛拿奖! #############";cout<<"###### 课程购买后永久学习,不受限制! ######";return0;}
  • 一、CSP信奥赛C++通关学习视频课:
    • C++语法基础
    • C++语法进阶
    • C++算法
    • C++数据结构
    • CSP信奥赛数学
    • CSP信奥赛STL
  • 二、CSP信奥赛C++竞赛拿奖视频课:
    • 信奥赛csp-j初赛高频考点解析
    • CSP信奥赛C++复赛集训课(12大高频考点专题集训)
  • 三、考级、竞赛刷题题单及题解:
    • GESP C++考级真题题解
    • CSP信奥赛C++初赛及复赛高频考点真题解析
    • CSP信奥赛C++一等奖通关刷题题单及题解

详细内容:

1、csp/信奥赛C++,完整信奥赛系列课程(永久学习):

https://edu.csdn.net/lecturer/7901 点击跳转


2、CSP信奥赛C++竞赛拿奖视频课:

https://edu.csdn.net/course/detail/40437 点击跳转

3、csp信奥赛冲刺一等奖有效刷题题解:

CSP信奥赛C++初赛及复赛高频考点真题解析(持续更新):https://blog.csdn.net/weixin_66461496/category_12808781.html 点击跳转

  • 2025 csp-j 复赛真题及答案解析(最新更新)
  • 2025 csp-x(山东) 复赛真题及答案解析(最新更新)
  • 2025 csp-x(河南) 复赛真题及答案解析(最新更新)
  • 2025 csp-x(辽宁) 复赛真题及答案解析(最新更新)
  • 2025 csp-x(江西) 复赛真题及答案解析(最新更新)
  • 2025 csp-x(广西) 复赛真题及答案解析(最新更新)
  • 2020 ~ 2024 csp 复赛真题题单及题解
  • 2019 ~ 2022 csp-j 初赛高频考点真题分类解析
  • 2021 ~ 2024 csp-s 初赛高频考点解析
  • 2023 ~ 2024 csp-x (山东)初赛真题及答案解析
  • 2024 csp-j 初赛真题及答案解析
  • 2025 csp-j 初赛真题及答案解析(最新更新)
  • 2025 csp-s 初赛真题及答案解析(最新更新)
  • 2025 csp-x (山东)初赛真题及答案解析(最新更新)
  • 2025 csp-x (江西)初赛真题及答案解析(最新更新)
  • 2025 csp-x (辽宁)初赛真题及答案解析(最新更新)

CSP信奥赛C++一等奖通关刷题题单及题解(持续更新):https://blog.csdn.net/weixin_66461496/category_12673810.html 点击跳转

  • 129 道刷题练习和详细题解,涉及:模拟算法、数学思维、二分算法、 前缀和、差分、深搜、广搜、DP专题、 树和图

4、GESP C++考级真题题解:

GESP(C++ 一级+二级+三级)真题题解(持续更新):https://blog.csdn.net/weixin_66461496/category_12858102.html 点击跳转

GESP(C++ 四级+五级+六级)真题题解(持续更新):https://blog.csdn.net/weixin_66461496/category_12869848.html 点击跳转

· 文末祝福 ·

#include<bits/stdc++.h>usingnamespacestd;intmain(){cout<<"跟着王老师一起学习信奥赛C++";cout<<" 成就更好的自己! ";cout<<" csp信奥赛一等奖属于你! ";return0;}
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/10 13:07:34

RKNN-Toolkit2终极指南:Rockchip NPU平台AI模型部署完整解决方案

&#x1f680; 技术深度解析&#xff1a;从模型到硬件的智能桥梁 【免费下载链接】rknn-toolkit2 项目地址: https://gitcode.com/gh_mirrors/rkn/rknn-toolkit2 RKNN-Toolkit2作为Rockchip官方推出的神经网络工具链&#xff0c;为开发者提供了从训练到部署的无缝衔接体…

作者头像 李华
网站建设 2026/6/10 14:58:19

Rockchip NPU平台AI部署工具链全面解析

Rockchip NPU平台AI部署工具链全面解析 【免费下载链接】rknn-toolkit2 项目地址: https://gitcode.com/gh_mirrors/rkn/rknn-toolkit2 RKNN-Toolkit2作为Rockchip官方推出的神经网络工具链&#xff0c;为嵌入式AI应用开发提供了完整的解决方案。该工具链支持从模型训练…

作者头像 李华
网站建设 2026/6/10 14:50:56

macOS iSCSI Initiator完整指南:免费扩展存储空间的终极方案

macOS iSCSI Initiator完整指南&#xff1a;免费扩展存储空间的终极方案 【免费下载链接】iSCSIInitiator iSCSI Initiator for macOS 项目地址: https://gitcode.com/gh_mirrors/is/iSCSIInitiator macOS iSCSI Initiator是一款专为苹果电脑设计的开源软件&#xff0c;…

作者头像 李华
网站建设 2026/6/9 22:43:26

PoE Overlay:重新定义你的流放之路游戏体验

PoE Overlay&#xff1a;重新定义你的流放之路游戏体验 【免费下载链接】PoE-Overlay An Overlay for Path of Exile. Built with Overwolf and Angular. 项目地址: https://gitcode.com/gh_mirrors/po/PoE-Overlay 还在为《流放之路》中复杂的装备评估、繁琐的市场搜索…

作者头像 李华
网站建设 2026/6/10 13:24:01

Markdown数学公式书写:推导PyTorch-CUDA-v2.6中的损失函数

Markdown数学公式书写&#xff1a;推导PyTorch-CUDA-v2.6中的损失函数 在深度学习项目开发中&#xff0c;一个常见的困境是&#xff1a;模型能在本地跑通&#xff0c;却难以在同事的机器上复现结果。问题往往不在于代码本身&#xff0c;而在于环境差异——CUDA版本不匹配、cuDN…

作者头像 李华