求全排列(1) --- dfs 记录
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.各个元素不重复 abc,acb,....... 用next_permutataion()求全排列 #include<iostream> #include<algorithm> ...
- 三种求全排列方式之比较
一共有三种求全排列的方式: 第一种就是只适合用于非可重集的DFS实现 第二种就是可以用于可重集上的刘汝佳书上的代码 第三种就是STL中的next--permutation 在对这三种方式做了比较之后发 ...
- 递归求全排列的学习与理解
递归求全排列 全排列: 从n个不同元素中任取m(m≤n)个元素,按照一定的顺序排列起来,叫做从n个不同元素中取出m个元素的一个排列.当m=n时所有的排列情况叫全排列. 例题: 输出自然数 1 到n所有 ...
- C语言试题五十二之学生的记录由学号和成绩组称个,n名大学生得数据已在主函数中放入结构体数组a中,请编写函数fun,它的功能时:按分数的高低排列学生的记录,高分在前。
1. 题目 请编写一个函数void function(Student a[], int n),其功能时:学生的记录由学号和成绩组称个,n名大学生得数据已在主函数中放入结构体数组a中,请编写函数fun, ...
- PermutationsUnique,求全排列,去重
问题描述:给定一个数组,数组里面有重复元素,求全排列. 算法分析:和上一道题一样,只不过要去重. 3 import java.util.ArrayList; 4 import java.util.Ha ...
- C++ STL求全排列和组合
C++11 STL内置了求全排列的模板函数next_permutation和prev_permutation,属于<algorithm>头文件和std命名空间,使用非常方便.例如: vec ...
- Java递归求全排列详解
Java递归求全排列详解 推荐博客: 博客园Java全排列递归算法,结尾的解释很形象了 csdn的大佬写的,和我下面的代码思路基本一致 全排列的递归思想解释: 全排列的数学定义就不再过多解释,考虑递归 ...
- 专题训练(9) 1001 求全排列(1)
目录 专题训练(9) 1001 求全排列(1) 程序设计 程序分析 专题训练(9) 1001 求全排列(1) [问题描述] 输入一个正整数n, 请按照字典序输出1-n的全排列. [输入形式] 输入包含 ...
- [Leetcode][第60题][JAVA][第k个排列][回溯][DFS][剪枝]
[问题描述][中等] [解答思路] 1. 回溯搜索算法 + 剪枝 ,直接来到叶子结点 时间复杂度:O(N^2) 空间复杂度:O(N) import java.util.Arrays;public cl ...
最新文章
- 换种监控姿势:基于深度学习+流处理的时序告警系统
- QT 的信号与槽机制介绍
- mysql创建表的时候显式申明存储引擎
- 《程序猿的呐喊》读书笔记(下)
- python networkx使用案例_在有向图networkx的大型网络实例上,什么是最快的迭代?...
- 元年·潮湃 首届搜狐5G峰会倒计时 参会大咖揭晓
- 第七天20160803
- UI基础设计规范,确定不了解一下?
- python有道-Python爬去有道翻译
- php mcrypt 完全安装
- Mac OS X 10.8.3反编译Android apk
- Asterisk的配置详解
- 【转】数据结构图文解析之:二叉堆详解及C++模板实现
- 快速的APK厂商快速和免费的Andr​​oid应用程序生成器无需编码技巧
- LU分解法python程序代码
- 三星android手机工程模式,11款手机工程模式汇总 小编教你来验机
- win7升级到win10所遇到的坑
- 正点原子ATK-LORA-01无线串口代码移植+STM32F103C8T6(标准库)
- android+ts+播放器,开源播放器ijkplayer的编译
- AWS Account