在暴力求解法中,我们常常要用上枚举一些简单内容以便方便获得解,若要输出整数n的前n个整数的全排列,则按字典序输出为:

(1,2,3),(1,3,2),(2,1,3),(2,3,1),(3,1,2),(3,2,1)。

从中我们似乎发现了一些规律:先输出以1开头的排列,再输出以2开头的排列,然后是3;而在以1开头的排列中,1的后一位又是按从小到大的顺序出现,这似乎有些递归的联系。

事实上,我们分析一下生成排列的全过程,就会发现有一定递归的规律:

这不就是一棵树嘛?确实,由于这棵树能展现递归函数的调用过程,所以也称之为----解答树。

现在,根据解答树我们可以开始构造递归函数了:  定义一个大小等于待排列元素数目的数组,据解答树特点,可用DFS方式逐层深入给数组填空,然后由数组大小作为递归边界,并且在赋值时注意判断不可重复。

代码如下

#include<cstdio>
#include <cstdlib>
using namespace std;void permutation(int *a,int n,int cur){if(cur==n){for(int i=0;i<n;i++)printf("%d ",a[i]);printf("\n");}else {for(int j=1;j<=n;j++){int ok=1;for(int k=0;k<cur;k++){           if(a[k]==j){ok=0;break;}}if(ok){a[cur]=j;permutation(a,n,cur+1);}          }}
}
int main(){int n;scanf("%d",&n);int *a=new int[n]; permutation(a,n,0);
}

算法--生成1~n的排列相关推荐

  1. 算法--生成可重集排列

    在生成1~n的排列一文中,我们获取排列时用了控制不相等来实现让每个数都不重复地出现,所以如果要生成含有重复元素的全排列,对对生成1~n的排列的程序适当修改即可. 首先,把各个元素改成用户输入,输入数组 ...

  2. C语言编写Johnson-Trotter算法生成排列

    //Johnson-Trotter算法生成排列#include<stdio.h>int list[99];在这里插入代码片 int num[99]; int dir[99];int cha ...

  3. php hmacsha1计算,PHP HMAC_SHA1 算法 生成算法签名

    HMAC_SHA1(Hashed Message Authentication Code, Secure Hash Algorithm)是一种安全的基于加密hash函数和共享密钥的消息认证协议. 它可 ...

  4. ds图—最小生成树_Java: Kruskal算法生成最小生成树(邻接矩阵)

    Java: Kruskal算法生成最小生成树(邻接矩阵): package 输出: Kruskal=36: (E,F) (C,D) (D,E) (B,F) (E,G) (A,B) 分析: Java: ...

  5. Prim算法生成迷宫

    初始化地图 function initMaze(r,c){let row = new Array(2 * r + 1)for(let i = 0; i < row.length; i++){le ...

  6. TF之DD:利用Inception模型+GD算法生成带背景的大尺寸、高质量的Deep Dream图片——五个架构设计思维导图

    TF之DD:利用Inception模型+GD算法生成带背景的大尺寸.高质量的Deep Dream图片--五个架构设计思维导图 目录 TF中的Deep Dream实践:利用Inception模型+GD算 ...

  7. TF之DD:利用Inception模型+GD算法生成带背景的大尺寸、高质量的Deep Dream图片

    TF之DD:利用Inception模型+GD算法生成带背景的大尺寸.高质量的Deep Dream图片 目录 输出结果 设计思路 代码(部分)实现 输出结果 设计思路 代码(部分)实现 # coding ...

  8. TF之DD:利用Inception模型+GD算法生成更高质量的Deep Dream高质量图片

    TF之DD:利用Inception模型+GD算法生成更高质量的Deep Dream高质量图片 目录 输出结果 设计思路 部分代码 输出结果 设计思路 部分代码 # coding:utf-8#TF之DD ...

  9. TF之DD:利用Inception模型+GD算法生成更大尺寸的Deep Dream精美图片

    TF之DD:利用Inception模型+GD算法生成更大尺寸的Deep Dream精美图片 目录 输出结果 设计思路 部分代码 输出结果 设计思路 部分代码 TF之TFDeepDream:生成更大尺寸 ...

最新文章

  1. Open source robotics toolkits: use virtual arenas to test your robotics algorithms
  2. newInstance() 方法
  3. 大数据分析中国冬季重度雾霾的成因(三)
  4. asp.net后台代码动态添加JS文件和css文件的引用
  5. java 重建二叉树_【剑指offer】 Java实现重建二叉树
  6. 前端学习(1368):app.use使用
  7. node输出mysql的数据_node.js+async+mysql 查询数据输出问题,如何分别统计、提取每个sql语句的结果!!...
  8. python的作者叫什么_作者的来历是什么?
  9. 《唐人街探案3》刷新国产片单周票房纪录 票房超22亿
  10. 论文阅读:A Progressive Architecture With Knowledge Review Network for Salient Object Detection
  11. Django 1.10中文文档-聚合
  12. java 获取保存存储路径配置文件
  13. 西门子plc语句表是c语言吗,三菱、西门子PLC常用语句表,速来收!
  14. halcon实现直方图匹配(直方图规定化)
  15. 教你免费使用刷脸支付设备,蜻蜓二代返还政策解析
  16. 电子计算机第一台视频,1946年2月14日世界上第一台计算机诞生
  17. C#——初识Console
  18. Contest 1479 2018-ZZNU-ACM集训队 夏季队内积分赛 (3)K题(易水寒)
  19. 一般二阶线性非齐次微分方程的解与对应齐次方程的解的关系
  20. 逍遥模拟器微信提示无法连接服务器,逍遥模拟器无法连接网络怎么办?

热门文章

  1. 判断网页是否为微信内置浏览器打开?
  2. python语言与c语言相比在分支结构上有什么不同,python 基础教程之语法篇章——一小时入门python__对比python与C语言的语法异同...
  3. 雪花开发者中心地府云自适应1号模板 雪花xueidc插件
  4. codeigniter mysql查询_php – CodeIgniter MySQL查询不起作用
  5. Rtworld目录网全解开源2.0-功能齐全
  6. paascloud商城系统源码v2.0-完整购物流程和后端运营平台
  7. WordPress主题 WebStack导航主题
  8. 第二个情人节表白网页源码
  9. IDEA工具开发必备设置-极大提高开发效率
  10. 三级菜单 ajax 已经测试成功