首先我们把n个数字用数组存放,数字存放顺序任意
我们设一个递归函数为 void qpl(int a[ ],int k,int n)
(k的范围是0~n-1),其含义为,求a[0]到a[k]全排列a[k+1]到a[n-1]不变的序列
那么void qpl(int a[],int k-1,int n)含义为求a[0]到a[k-1]全排列a[k]到a[n-1]不变的序列

我们举一个例子:1 2 3 4 5
令k=2,那么我们只需求前三个数的全排列。k=1,我们只需求前两个数的全排列。
那么前三个数的全排列个数又等于在三个数中取出来两个数,把这两个数放在前两位,再对这两个数进行全排列的个数,此为递推关系。
假设前三个数输入1,2,3
那么我们先求1,2的全排列,再把1和3换位置,求3,2的全排列,再把2,3换位置,求1,3的全排列。

下面给出代码

void qpl(int a[],int k,int n)
{int i,temp;
if(k==0)
{for(i=0;i<n;i++)
printf("%d",a[i]);
printf("\n");
}
else
{for(i=0;i<=k;i++)
{temp=a[i];     //a[i]和a[k]交换下位置
a[i]=a[k];
a[k]=temp;
qbl(a,k-1,n);  //求a[0]到a[k-1]的全排列
temp=a[i];
a[i]=a[k];
a[k]=temp;    //交换回来,下一个数和a[k]交换,循环操作
}
}
}

递归算法求n个数字的全排列相关推荐

  1. C#求数组中元素的全排列

    2019独角兽企业重金招聘Python工程师标准>>> 1.算法描述 全排列的第一项是该数组的升序排列,最后一项是该数组的降序排列.本文中用到的了一个函数FindNextArray: ...

  2. 减治求有重复元素的全排列

    求n个元素的全排列的所有解可以用减治法:每次拎出一个数做前缀,对剩下的元素再求全排列,直至只剩一个元素.代码源自<算法分析与设计(王晓东)>,复杂度O(n!) 1 //输出k~m的所有全排 ...

  3. 编程笔试(解析及代码实现):求不重复数字之和​​​​​​​给定一组整型数字,里面有且仅有两个数字值出现了一次,其他的数字都出现了两次。请写出程序求出这两个只出现了一次的数字之和

    编程笔试(解析及代码实现):求不重复数字之和给定一组整型数字,里面有且仅有两个数字值出现了一次,其他的数字都出现了两次.请写出程序求出这两个只出现了一次的数字之和 目录 题目描述 代码实现 题目描述 ...

  4. C#深度优先做数字的全排列

    问题描述 输入1~9之间的数字,就可以做这个数字以下所有数字的全排列. 算法思想 1******: 比如1-5之间数字的全排列,把1放在第一位上,然后后面的数字从小到大排列: 排列好之后开始倒序取两个 ...

  5. 求字符串里面数字之和

    无意看到别人面试问了很简单的问题,求字符串里面数字之和,所以自己来实现下. 例子: 比如字符串:aaaa13sseui9ddu78ff4sss 里面的字符串数字是13.9.78.4 得到的和为104 ...

  6. 求两个数字的乘积,如果大于0,说明两个数字同号,如果小于0,说明两个数字异号,如果等于0,说明其中一个是0

    学了java基础东西,就写了这个编程,求两个数字的乘积,如果大于0,说明两个数字同号,如果小于0,说明两个数字异号,如果等于0,说明其中一个是0 首先程序要求我们输入两个数字,我就用了Scanner来 ...

  7. 求4个数字组成的不重复三位数,Python简洁解法

    求4个数字组成的不重复三位数,Python解法 题目要求: 求所有由5,6,7,8组成的数字不重复的三位数 不重复的三位数,即不能出现555,566这种 通过分析,可以使用画树的方法来确定要求的三位数 ...

  8. python按指定条件筛选_求Python筛选数字集合内满足指定条件的数据方法,python筛选,唯一匹配是指mdash...

    求Python筛选数字集合内满足指定条件的数据方法,python筛选,唯一匹配是指&mdash 唯一匹配是指----任何找出来的一对数中,位于一个集合中的数只能和另一个集合中的唯一 一个数匹配 ...

  9. 以孩子兄弟链表为存储结构,请设计递归算法求树的高度

    题目:以孩子兄弟链表为存储结构,请设计递归算法求树的高度 分析:如果只有根节点,那么高度为1,如果有左孩子,那么高度由左孩子的左子树和右子树决定,取其大者. 代码如下: typedef struct ...

最新文章

  1. 文件流下载到本地 - 待完成
  2. Response对象学习
  3. 6. Qt 信号与信号槽(3)-QMetaObject
  4. [Kafka与Spark集成系列三] Spark编程模型
  5. java正则过滤js_JS/Java正则表达式验证
  6. 凯利公式自动计算表_EXCEL——可自动计算的收支表,全函数计算,拿上就用!
  7. Python3.x中set()集合的使用方法
  8. yeoman、bower、grunt 开发收集
  9. 海量高维数据与纬度约减
  10. PSpice的安装与Pspice的应用——B-1
  11. 建筑能源管理系统主要有什么功能?
  12. 软件架构设计师-ER图-关系模型转换
  13. 步进电机的正反向旋转c语言编程,实现步进电机自动正反转程序怎么写
  14. java无损压缩图片
  15. svn提示Node remains in conflict的解决办法
  16. AI创作教程之如何使用简单的 Web API 和 GPU 支持在 Docker 中运行 Stable Diffusion,在 45 秒内启动用于 Stable Diffusion的 Web API
  17. 计算机终端机 大型游戏,云电脑让各种终端玩转大型游戏
  18. Kafka动态认证SASL/SCRAM验证
  19. 如何搭建一套在线网校系统?需要哪些功能?
  20. NIST数字测试套件使用说明

热门文章

  1. arping 的特殊用法
  2. 计算机基础知识学习题,超全的计算机基础知识题库【精心整理_完全免费】.pdf...
  3. 电磁兼容测试在测试带载电机控制系统的方法
  4. HTML,JS与CSS
  5. 更改用户自己的FTP密码
  6. 物联网的三层概念模型
  7. python爬虫微信e校园签到,用Python爬虫的request方式实现自动签到!
  8. 世平信息商用密码应用检查系统正式发布!数字时代合规管控路径再突破
  9. 百度搜素推出细雨算法
  10. 课余或者业余学习python,可以嘛?