当前位置: 首页 > news >正文

题解:洛谷 P1706 全排列问题

【题目来源】

洛谷:P1706 全排列问题 - 洛谷 (luogu.com.cn)

【题目描述】

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

【输入】

一个整数 \(n\)

【输出】

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

每个数字保留 \(5\) 个场宽。

【输入样例】

3

【输出样例】

    1    2    31    3    22    1    32    3    13    1    23    2    1

【解题思路】

image

image

【算法标签】

《洛谷 P1706 全排列问题》 #搜索# #数学# #递归# #深度优先搜索,DFS#

【代码详解】

#include <bits/stdc++.h>
using namespace std;int n, a[10], book[10] = {0};  // 定义全局变量:n-排列长度,a-存储当前排列,book-标记数组// 深度优先搜索生成全排列
void dfs(int step) 
{// step: 当前正在填充的位置索引(从0开始)// 终止条件:已填满整个排列if (step == n) {// 输出当前排列(每个数字占5位宽度)for (int i = 0; i < n; i++) cout << setw(5) << a[i];cout << endl;return;}// 尝试所有可能的数字(1到n)for (int i = 1; i <= n; i++) {// 如果数字i未被使用if (book[i] == 0) {a[step] = i;    // 将数字i放入当前位置book[i] = 1;    // 标记数字i为已使用dfs(step + 1);  // 递归处理下一个位置book[i] = 0;    // 回溯,取消数字i的标记}}
}int main() 
{cin >> n;  // 输入排列长度ndfs(0);    // 从第0个位置开始生成排列return 0;
}
#include <bits/stdc++.h>
using namespace std;// 全局变量声明
int n;          // 排列长度(1到n的全排列)
int a[10];      // 存储当前生成的排列(索引1到n)
int book[10] = {0}; // 标记数组,记录数字是否已使用(0未使用,1已使用)// 深度优先搜索函数
void dfs(int step) 
{// step表示当前正在处理的位置(从1开始)// 终止条件:当step超过n时,说明已经生成了一个完整的排列if (step == n + 1) {// 输出当前排列(每个数字占5位宽度)for (int i = 1; i <= n; i++) cout << setw(5) << a[i];  // 格式化输出cout << endl;  // 换行return;        // 返回上一层递归}// 尝试将每个数字放入当前位置for (int i = 1; i <= n; i++) {// 检查数字i是否未被使用if (book[i] == 0) {a[step] = i;    // 将数字i放入当前位置book[i] = 1;    // 标记数字i为已使用dfs(step + 1);  // 递归处理下一个位置// 回溯操作a[step] = 0;    // 清除当前位置的值(可省略)book[i] = 0;    // 取消数字i的标记}}
}int main() 
{cin >> n;    // 输入排列长度ndfs(1);      // 从第1个位置开始生成排列return 0;
}

【运行结果】

31    2    31    3    22    1    32    3    13    1    23    2    1
http://www.jsqmd.com/news/389901/

相关文章:

  • 2026评测揭秘:三边封拉链袋哪些厂商值得信赖?包装袋/四边封包装袋/自立拉链袋/纹路袋,三边封拉链袋生产厂家有哪些 - 品牌推荐师
  • 真空吸盘实力厂家大揭秘:2026年行业优选推荐,国内口碑好的真空吸盘品牌口碑推荐榜贵磁设备专注行业多年经验,口碑良好 - 品牌推荐师
  • 题解:洛谷 P1157 组合的输出
  • 题解:洛谷 P2089 烤鸡
  • 题解:洛谷 P1036 [NOIP 2002 普及组] 选数
  • 题解:洛谷 P1618 三连击(升级版)
  • lanqiaoOJ 1020:阶乘约数 ← 整数唯一分解定理 + 约数个数定理
  • 题解:洛谷 P2241 统计方形(数据加强版)
  • 综述不会写?千笔,王者级的AI论文写作软件
  • 定稿前必看!更贴合继续教育的AI论文平台,千笔·专业论文写作工具 VS WPS AI
  • 08]delphi10.3剪贴板的图片,保存到文件
  • 评测2026年主流安检设备,揭秘可靠直销渠道,安检门/智能安检/安检仪/金属探测门/安检设备,安检设备源头厂家哪家好 - 品牌推荐师
  • 数据码农马年大吉
  • 定稿前必看!9个降AIGC工具测评:本科生降AI率必备指南
  • 导师推荐!继续教育论文神器 —— 千笔AI
  • 格式总出错?千笔AI,全民喜爱的AI论文写作软件
  • 新手也能上手 9个降AI率工具:研究生降AI率全维度测评
  • 生产环境VSCode中ESLint与Prettier冲突终极解决方案(90%开发者都踩过的坑)最佳实践与性能优化
  • 导师推荐 10个 AI论文写作软件:研究生毕业论文与科研写作必备工具测评
  • 吐血推荐! AI论文平台 千笔AI VS speedai,自考写论文必备神器!
  • 拖延症福音!降AI率平台 千笔AI VS PaperRed,自考党必备
  • AI岗位真的比网安岗位强多了?我们是否该“All in AI Agent”?——一场关于技术趋势、安全边界与职业选择的深度思辨
  • 用数据说话 AI论文写作软件 千笔ai写作 VS Checkjie 更贴合自考需求
  • 科研党收藏!千笔AI,冠绝行业的降AI率平台
  • 深入解析:Linux:信号保存下(信号二)
  • Metasploit Framework 6.4.115 (macOS, Linux, Windows) - 开源渗透测试框架
  • 【Windows】终末地导致的System进程异常高占用内存和磁盘资源##36
  • Go错误处理与日志记录:构建健壮且可观测的应用
  • Nodejs+vue3的云端网上书城 图书商城销售听书系统
  • 2026必备!千笔,自考降重神器 —— 风靡全网