题目描述

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

输入输出格式

输入格式:

n(1≤n≤9)

输出格式:

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

输入输出样例

输入样例#1: 复制

3

输出样例#1: 复制

    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

简单的全排列问题(给初学者)相关推荐

  1. 关于Bootstrap的简单使用我也是初学者

    关于Bootstrap的简单使用我也是初学者 前言:在使用bootstrap的时候要要引入相关的文件 ,可以在https://www.bootcdn.cn/中下载相关的库 在https://www.b ...

  2. 学习LINUX第三天:最简单的LAMP组合(适合初学者)

    上次我们把不能在虚拟机中进入XWINDOWS的问题解决了,这对我们今天要配置的LAMP(指LINUX+APECHE+MYSQL+PHP)环境起了一个很大(其实就是方便)的作用.为什么这样说呢?记得我们 ...

  3. 一个简单的全排列算法

    什么是全排列?就是从n个数字中选择n个数字按照一定的顺序排列起来. 本文要讨论的算法要完成的任务是:给定一个数组,输出其所有的全排列结果.要求可以概括为两点: 输出该数组所有的全排列结果 任意两个全排 ...

  4. python简单好玩的代码_Python初学者好玩案例(一):最短的抓取网页图片代码,只有10行...

    这几天闲来无事,又研究了一下Python的基础内容,首先研究的是如何抓取网页数据.为什么把这篇作为初学者笔记呢?只是想让大家感受一下Python的强大的功能和简便的用法. 发现大神们通常在初级教程里就 ...

  5. python编写爬虫的步骤-如何编写python脚本?教你做简单的爬虫,适合初学者

    如何编写python脚本?很多朋友学习python都希望能从爬虫开始,而网络爬虫是近年来的热门话题,学习网络爬虫的人越来越多! 其实,一般的爬虫技术具有2个功能:取数据和存数据!好像我们说了句废话.. ...

  6. Django----做一个简单网页的教程(适合初学者)

    这篇文字适合刚学习Django的同学,如果比较熟的就不用看了. 以下都是讲在windows上的部署情况: 准备: 1.python3.6 2.pycharm profession(专业版) 3.安装D ...

  7. Java时间片轮转(简单模拟实现,适合初学者)

    package 调度算法2;//注意文件名,需与自己创建的一致 public class Shijianpian {//注意类名,需与自己创建的一致static int a1=0,b1=0,c1=0, ...

  8. Python 程序示例 - 初学者的简单代码示例

    马克吐温说过,出人头地的秘诀就是开始.编程对于初学者来说似乎令人望而生畏,但最好的入门方式是直接投入并开始编写代码. 简单的代码示例是初学者入门和学习编程基础知识的好方法.在本文中,我将提供一系列非常 ...

  9. 初学者自学python要看什么书-学习Python可以看书籍学习吗?老男孩Python入门课程...

    在人工智能和数据分析的带领之下,推动了互联网市场的发展,也推动了python语言的发展,让它成为了市场上炙手可热的编程语言. 而python具有入门简单.就业范围广泛.薪资水平高诸多优势,越来越多的人 ...

最新文章

  1. 关于void main()的误区
  2. [课程设计]Scrum 多鱼点餐系统(团队交流日)
  3. LeetCode 474. 一和零(01背包动态规划)
  4. Tomcat下找不到properties文件
  5. 百度女程序员半夜打的回家,被的哥嘲讽:加班到一点收入还不如我,图啥?
  6. 百度编辑器 Ueditor 如何增加模板 ?
  7. java for class_Java ObjectStreamClass forClass()方法与示例
  8. pandas创建和文件读取笔记(一)
  9. hisicv200 exfat支持(转)
  10. pandas.Series.asfreq
  11. 《跑跑卡丁车》国内运营商裁员超30%
  12. myeclipse 快捷键(转载)
  13. 安卓程序员需要什么证书
  14. 2020美化一款PHP版三合一收款码_附50多款模板源码
  15. linux sfc模拟器,PSP适用SFC模拟器Snes9x完全使用教程
  16. Java中的~运算符号
  17. 认识计算机课件小游戏,2013年小学信息技术教案《认识计算机二》教案
  18. 计算机组成原理中EMAR是什么,计算机组成原理与汇编语言程序设计第3章2
  19. (翻译)链接需要鼠标悬停效果的原因
  20. ffmpeg获取视频封面图片

热门文章

  1. infopath转换html,Microsoft Tools to Save InfoPath Forms as HTML
  2. java 减少内存_java-减少应用程序内存占用
  3. java能连上数据库_jsp usebean调用不行_JSP+tomcat+sql2005+javabean连接不上数据库,请高手帮我看看原因...
  4. python按行读取excel文件_python3读取excel文件只提取某些行某些列的值方法
  5. php查询锁表情况,MySQL update where in 子查询导致锁表
  6. oracle apex 日志,oracle-apex - 在oracle apex报告中显示员工记录或经理记录及其员工 - SO中文参考 - www.soinside.com...
  7. 终于找到中文版JDK1.8-API了~
  8. python记录(4)- lxml模块创建xml文件
  9. 【机器学习】从房价预测问题看回归算法
  10. 机器学习解决问题思路 — 词嵌入矩阵E对于NLP问题的重要性