博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
简单的全排列问题(给初学者)
阅读量:5157 次
发布时间:2019-06-13

本文共 1086 字,大约阅读时间需要 3 分钟。

题目描述

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

输入输出格式

输入格式:

 

n(1≤n≤9)

 

输出格式:

 

由1~n组成的所有不重复的数字序列,每行一个序列。每个数字保留5个常宽。

 

输入输出样例

输入样例#1: 
3
输出样例#1: 
1    2    3    1    3    2    2    1    3    2    3    1    3    1    2    3    2    1

 

深搜;print为输出函数,%5d就是题目要求 每个数字占五个长宽, dfs深搜,if(!a[i])是如果它等于0的意思,dfs(x+1)后面的a[i]=0为回溯, 执行这个的条件是当for循环完了还不满足if(x==n)是,就执行这一句回溯, (可以自己调试看看),回溯后返回上一层, 也就是x,回溯前是x+1,回溯后是x,可以理解为x+1-1,-1就代表回溯到上一步, 然后main函数里的dfs(0),为什么是0? 对于dfs,可以先0,先1,先x……都可以,根据自己的代码来,这里从零开始, 跳到dfs函数,那么x就等于0,然后紧接着x+1就等于1,b[x+1]=i; 也就是b[1]=i是刚好的,如果dfs(1),那x+1就等于2,那就错了。 嗯,,,一开始我也很绝望,,真的看不懂,现在好像也还有点儿,,,我把我 难理解的写出来了,仅仅是给新手看的。 我太,,lj了。。。
1 #include
2 #include
3 #include
4 #include
5 #include
6 using namespace std; 7 int n,b[11]; 8 bool a[233]; 9 void print()10 {11   for(int i=1;i<=n;i++)12     printf("%5d",b[i]);13   cout<

 


如果你不开心,那我就把右边这个帅傻子分享给你吧, 

你看,他这么好看,那么深情的望着你,你还伤心吗? 

真的!这照片盯上他五秒钟就想笑了。 

一切都会过去的。

 

转载于:https://www.cnblogs.com/Mary-Sue/p/8545420.html

你可能感兴趣的文章
虚拟机中3种常见的网络模式
查看>>
三层交换机的设置
查看>>
汇编语言:第九章 转移指令的原理
查看>>
内核的ramdisk
查看>>
Gerrit+apache+H2数据库简单安装配置及建库流程
查看>>
(第三周)团队模式中对交响乐团模式的理解
查看>>
Python2和Python3共存安装robotframework
查看>>
从源代码分析DbSet如何通过ObjectStateManager管理entity lifecycle的生命周期
查看>>
ABAP OO的八大理由(十四)
查看>>
Count Numbers with Unique Digits
查看>>
HeroM2连击技能设置和DB完整数据
查看>>
羊车门问题(Python)
查看>>
网络流题集
查看>>
让Dropdownlist既有静态项又有动态项或者既能有编辑项又能绑定数据源
查看>>
421. Maximum XOR of Two Numbers in an Array
查看>>
Spring Boot读取配置的几种方式
查看>>
冲刺NO.3
查看>>
Java Reflection(二):Classes
查看>>
移动APP测试流程
查看>>
SqlServer中创建非聚集索引和非聚集索引
查看>>