简单的全排列问题(给初学者)
题目描述
输出自然数1到n所有不重复的排列,即n的全排列,要求所产生的任一数字序列中不允许出现重复的数字。
输入输出格式
输入格式:
n(1≤n≤9)
输出格式:
由1~n组成的所有不重复的数字序列,每行一个序列。每个数字保留5个常宽。
输入输出样例
3
1 2 31 3 22 1 32 3 13 1 23 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<iostream> 2 #include<cstdio> 3 #include<cmath> 4 #include<cstring> 5 #include<algorithm> 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<<endl; 14 } 15 void dfs(int x) 16 { 17 int i; 18 if(x==n) 19 { 20 print(); 21 return ; 22 } 23 for(int i=1;i<=n;i++) 24 { 25 if(!a[i]) 26 { 27 a[i]=1; 28 b[x+1]=i; 29 dfs(x+1); 30 a[i]=0; 31 } 32 } 33 } 34 int main() 35 { 36 scanf("%d",&n); 37 for(int i=1;i<=n;i++) 38 b[i]=i; 39 dfs(0); 40 41 return 0; 42 43 }
如果你不开心,那我就把右边这个帅傻子分享给你吧,
你看,他这么好看,那么深情的望着你,你还伤心吗?
真的!这照片盯上他五秒钟就想笑了。
一切都会过去的。
转载于:https://www.cnblogs.com/Mary-Sue/p/8545420.html
简单的全排列问题(给初学者)相关推荐
- 关于Bootstrap的简单使用我也是初学者
关于Bootstrap的简单使用我也是初学者 前言:在使用bootstrap的时候要要引入相关的文件 ,可以在https://www.bootcdn.cn/中下载相关的库 在https://www.b ...
- 学习LINUX第三天:最简单的LAMP组合(适合初学者)
上次我们把不能在虚拟机中进入XWINDOWS的问题解决了,这对我们今天要配置的LAMP(指LINUX+APECHE+MYSQL+PHP)环境起了一个很大(其实就是方便)的作用.为什么这样说呢?记得我们 ...
- 一个简单的全排列算法
什么是全排列?就是从n个数字中选择n个数字按照一定的顺序排列起来. 本文要讨论的算法要完成的任务是:给定一个数组,输出其所有的全排列结果.要求可以概括为两点: 输出该数组所有的全排列结果 任意两个全排 ...
- python简单好玩的代码_Python初学者好玩案例(一):最短的抓取网页图片代码,只有10行...
这几天闲来无事,又研究了一下Python的基础内容,首先研究的是如何抓取网页数据.为什么把这篇作为初学者笔记呢?只是想让大家感受一下Python的强大的功能和简便的用法. 发现大神们通常在初级教程里就 ...
- python编写爬虫的步骤-如何编写python脚本?教你做简单的爬虫,适合初学者
如何编写python脚本?很多朋友学习python都希望能从爬虫开始,而网络爬虫是近年来的热门话题,学习网络爬虫的人越来越多! 其实,一般的爬虫技术具有2个功能:取数据和存数据!好像我们说了句废话.. ...
- Django----做一个简单网页的教程(适合初学者)
这篇文字适合刚学习Django的同学,如果比较熟的就不用看了. 以下都是讲在windows上的部署情况: 准备: 1.python3.6 2.pycharm profession(专业版) 3.安装D ...
- Java时间片轮转(简单模拟实现,适合初学者)
package 调度算法2;//注意文件名,需与自己创建的一致 public class Shijianpian {//注意类名,需与自己创建的一致static int a1=0,b1=0,c1=0, ...
- Python 程序示例 - 初学者的简单代码示例
马克吐温说过,出人头地的秘诀就是开始.编程对于初学者来说似乎令人望而生畏,但最好的入门方式是直接投入并开始编写代码. 简单的代码示例是初学者入门和学习编程基础知识的好方法.在本文中,我将提供一系列非常 ...
- 初学者自学python要看什么书-学习Python可以看书籍学习吗?老男孩Python入门课程...
在人工智能和数据分析的带领之下,推动了互联网市场的发展,也推动了python语言的发展,让它成为了市场上炙手可热的编程语言. 而python具有入门简单.就业范围广泛.薪资水平高诸多优势,越来越多的人 ...
最新文章
- 关于void main()的误区
- [课程设计]Scrum 多鱼点餐系统(团队交流日)
- LeetCode 474. 一和零(01背包动态规划)
- Tomcat下找不到properties文件
- 百度女程序员半夜打的回家,被的哥嘲讽:加班到一点收入还不如我,图啥?
- 百度编辑器 Ueditor 如何增加模板 ?
- java for class_Java ObjectStreamClass forClass()方法与示例
- pandas创建和文件读取笔记(一)
- hisicv200 exfat支持(转)
- pandas.Series.asfreq
- 《跑跑卡丁车》国内运营商裁员超30%
- myeclipse 快捷键(转载)
- 安卓程序员需要什么证书
- 2020美化一款PHP版三合一收款码_附50多款模板源码
- linux sfc模拟器,PSP适用SFC模拟器Snes9x完全使用教程
- Java中的~运算符号
- 认识计算机课件小游戏,2013年小学信息技术教案《认识计算机二》教案
- 计算机组成原理中EMAR是什么,计算机组成原理与汇编语言程序设计第3章2
- (翻译)链接需要鼠标悬停效果的原因
- ffmpeg获取视频封面图片
热门文章
- infopath转换html,Microsoft Tools to Save InfoPath Forms as HTML
- java 减少内存_java-减少应用程序内存占用
- java能连上数据库_jsp usebean调用不行_JSP+tomcat+sql2005+javabean连接不上数据库,请高手帮我看看原因...
- python按行读取excel文件_python3读取excel文件只提取某些行某些列的值方法
- php查询锁表情况,MySQL update where in 子查询导致锁表
- oracle apex 日志,oracle-apex - 在oracle apex报告中显示员工记录或经理记录及其员工 - SO中文参考 - www.soinside.com...
- 终于找到中文版JDK1.8-API了~
- python记录(4)- lxml模块创建xml文件
- 【机器学习】从房价预测问题看回归算法
- 机器学习解决问题思路 — 词嵌入矩阵E对于NLP问题的重要性