Problem Description
输入一个正整数n, 请按照字典序输出1-n的全排列。

Input
输入包含多组测试用例。
每组数据占一行,包含一个正整数n(n<10)。

Output
每个排列输出一行,每个数字后面跟一个空格。
具体格式参加样例的输出。

Sample Input
3
2

Sample Output
1 2 3
1 3 2
2 1 3
2 3 1
3 1 2
3 2 1
1 2
2 1

思路:
n个数字,可将所有可能的排序分为n类,即分别是以1~n开头的数字,然后剩余的数字组成的子问题,又可以进行同样的分类处理。

#include<bits/stdc++.h>
using namespace std;//num存放排序结果,vis标记是否存放过
int n, num[15], vis[15];void dfs(int step) {  // step表示接下来准备填第几个数字if(step == n + 1) { // step == n + 1: 准备填第n+1个数字,说明前面n个数字都填好了for(int i = 1; i <= n; i++) {printf("%d ", num[i]);}printf("\n"); // 注意换行}for(int i = 1; i <= n; i++) {  // 遍历每个开头数字if(vis[i])   continue;  // 查看是否访问过num[step] = i;  // 注意这里num中下标为step而非ivis[i] = 1;  // 标记dfs(step + 1);  // 填写step + 1个数字vis[i] = 0;  // 回溯,退回来找新的可能}
}int main() {while(~scanf("%d", &n)) {memset(vis, 0, sizeof(vis));  // 多组数据输入,需要初始化标记数组dfs(1);}return 0;
}

求全排列(1) --- dfs 记录相关推荐

  1. 蓝桥杯笔记:(给的元素不重复)求全排列(排列不可重复,排列可重复)

    1.各个元素不重复 abc,acb,....... 用next_permutataion()求全排列 #include<iostream> #include<algorithm> ...

  2. 三种求全排列方式之比较

    一共有三种求全排列的方式: 第一种就是只适合用于非可重集的DFS实现 第二种就是可以用于可重集上的刘汝佳书上的代码 第三种就是STL中的next--permutation 在对这三种方式做了比较之后发 ...

  3. 递归求全排列的学习与理解

    递归求全排列 全排列: 从n个不同元素中任取m(m≤n)个元素,按照一定的顺序排列起来,叫做从n个不同元素中取出m个元素的一个排列.当m=n时所有的排列情况叫全排列. 例题: 输出自然数 1 到n所有 ...

  4. C语言试题五十二之学生的记录由学号和成绩组称个,n名大学生得数据已在主函数中放入结构体数组a中,请编写函数fun,它的功能时:按分数的高低排列学生的记录,高分在前。

    1. 题目 请编写一个函数void function(Student a[], int n),其功能时:学生的记录由学号和成绩组称个,n名大学生得数据已在主函数中放入结构体数组a中,请编写函数fun, ...

  5. PermutationsUnique,求全排列,去重

    问题描述:给定一个数组,数组里面有重复元素,求全排列. 算法分析:和上一道题一样,只不过要去重. 3 import java.util.ArrayList; 4 import java.util.Ha ...

  6. C++ STL求全排列和组合

    C++11 STL内置了求全排列的模板函数next_permutation和prev_permutation,属于<algorithm>头文件和std命名空间,使用非常方便.例如: vec ...

  7. Java递归求全排列详解

    Java递归求全排列详解 推荐博客: 博客园Java全排列递归算法,结尾的解释很形象了 csdn的大佬写的,和我下面的代码思路基本一致 全排列的递归思想解释: 全排列的数学定义就不再过多解释,考虑递归 ...

  8. 专题训练(9) 1001 求全排列(1)

    目录 专题训练(9) 1001 求全排列(1) 程序设计 程序分析 专题训练(9) 1001 求全排列(1) [问题描述] 输入一个正整数n, 请按照字典序输出1-n的全排列. [输入形式] 输入包含 ...

  9. [Leetcode][第60题][JAVA][第k个排列][回溯][DFS][剪枝]

    [问题描述][中等] [解答思路] 1. 回溯搜索算法 + 剪枝 ,直接来到叶子结点 时间复杂度:O(N^2) 空间复杂度:O(N) import java.util.Arrays;public cl ...

最新文章

  1. 换种监控姿势:基于深度学习+流处理的时序告警系统
  2. QT 的信号与槽机制介绍
  3. mysql创建表的时候显式申明存储引擎
  4. 《程序猿的呐喊》读书笔记(下)
  5. python networkx使用案例_在有向图networkx的大型网络实例上,什么是最快的迭代?...
  6. 元年·潮湃 首届搜狐5G峰会倒计时 参会大咖揭晓
  7. 第七天20160803
  8. UI基础设计规范,确定不了解一下?
  9. python有道-Python爬去有道翻译
  10. php mcrypt 完全安装
  11. Mac OS X 10.8.3反编译Android apk
  12. Asterisk的配置详解
  13. 【转】数据结构图文解析之:二叉堆详解及C++模板实现
  14. 快速的APK厂商快速和免费的Andr​​oid应用程序生成器无需编码技巧
  15. LU分解法python程序代码
  16. 三星android手机工程模式,11款手机工程模式汇总 小编教你来验机
  17. win7升级到win10所遇到的坑
  18. 正点原子ATK-LORA-01无线串口代码移植+STM32F103C8T6(标准库)
  19. android+ts+播放器,开源播放器ijkplayer的编译
  20. AWS Account

热门文章

  1. 阿里云服务器的公网ipv6地址申请与配置
  2. 数据中台常用术语整理
  3. amd linux raid,RAID的详解
  4. 渗透测试原理与基本进程
  5. 送您一份《学编程笔记本电脑选购指南》,建议收藏!
  6. 搜集源码之github搜索语法,网盘搜索,搜索引擎等
  7. 利用js制作的简单网页小游戏
  8. java 启动参数 别名,Spring boot 参数别名处理
  9. 勒索病毒威胁的解决方案
  10. java实验1_《Java程序设计》实验1