




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
全排列算法设计和分析第一页,共8页。两个例子123的全排列
--首先遍历元素,然后把遍历到的每一个元素都和第一个元素交换
第一个和第一个交换就是1和1交换最后还是123
那么就形成了123
213
321这样的3组
(交换后再换回来还原成123因为后面的交换都是在123的基础上交换的所以swap要写2次)
-检查每一组除了第一个之外的剩余元素,如果这些元素个数是2,那么就对这剩下的2个元素全排列就是123132,
213231,3213122个元素的全排列很简单就是把这2个元素交换位置就OK)
第二页,共8页。两个例子1234的全排列
--首先遍历元素,然后把遍历到的每一个元素都和第一个元素交换
那么就形成了1234
2134
32144231这样的4组
-检查每一组除了第一个之外的剩余元素,如1234剩余的是234,发现是3个元素
那么问题就转换为求234的全排列了
接下来也是一样问题转换为求134,214,231的全排列像这样总是对除了第一个之外的元素全排列,每次元素的个数都在减少一个,求N个元素全排列最终就变成求2的元素的全排列了
第三页,共8页。求n个元素的全排列。分析:n=1输出a1;n=2输出a1a2;a2a1;n=3输出a1a2a3;a1a3a2;a2a1a3;a2a3a1;
a3a2a1;a3a1a2;归纳:n=3时排列的分类(1)a1类:a1之后跟a2,a3的全排列;(2)a2类:a2之后跟a1,a3的全排列;(3)a3类:a3之后跟a2,a1的全排列。将(1)中的a1,a2互换位置,得到(2);将(1)中的a1,a3互换位置,得到(3).可以用循环重复执行“交换位置,后跟剩余序列的所有排列”;对剩余的序列再使用该方法,直至没有剩余序列——递归调用由排列组合的知识可知,n个元素的全排列共有n!种。n!可分解为n*(n-1)!种,而(n-1)!又分解为(n-1)(n-2)!种,依次类推。第四页,共8页。若用一个数组a[n]来保存1~n之间的n个自然数,对于i=1~n,每次使a[1]同a[i]交换后,对a[2]~a[n]中的n-1个元素进行全排列,然后再交换a[1]与a[i]的值,使它恢复为此次排列前的状态;同样,对于a[3]~a[n]区间内的n-2个元素进行全排列,然后再把交换的元素交换回来;依次类推,直到对a[n]进行全排列时,输出整个数组的值,即得到一种排列结果。n=3123132213231321312n=4
123412431324134214321423213421432314234124312413
321432413124314234123421
423142134321431241324123第五页,共8页。procedurerange(a,k,n)ifk=nthenprint(a)elsefori←ktondo{a[k]a[i];callrange(a,k+1,n);
a[k]a[i];}endifendrange;对于n个元素a=(a1a2……ak……an),设过程range(a,k,n)是求a的第k到第n个元素的全排列。算法如下:procedurerange(a,k,n);
当k指向最后元素时,递归终止,输出相应的字符串a
否则
i从k到n重复执行:交换ak与ai;range(a,k+1,n);
交换ak与ai;endrange;
第六页,共8页。
VoidPerm(Typelist[],intk,intm){//递归的产生前缀是list[0:k-1]后缀是list[k:m]的全排列的所有排列 if(k==m) {//只剩下一个元素 for(inti=0;i<=m;i++)cout<<list[i]; cout<<endl; } else//还有多个元素待
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年软磁材料项目发展计划
- 2025年高中人教版地理选修四《城乡规划》知识点归纳
- 3 心脏和血液 教学设计-2023-2024学年科学五年级上册教科版
- 2023一年级数学下册 五 加与减(二)练习三教学实录 北师大版
- 7生命最宝贵 (教学设计)2024-2025学年统编版道德与法治三年级上册
- 2024年春八年级历史下册 第13课 民族团结与共同繁荣教学实录1(pdf) 川教版
- 健康管理手册与饮食运动建议(侧重健康生活)
- 农业科技行业农业信息化技术应用测试卷
- 3不懂就要问 教学设计-2024-2025学年语文三年级上册统编版
- 早期康复护理模式在脑梗死护理中的效果研究
- 2025年全国高考体育单招政治时事填空练习50题(含答案)
- 2024年医疗器械经营质量管理规范培训课件
- 中华人民共和国学前教育法-知识培训
- 2024年计算机二级WPS考试题库380题(含答案)
- 使用rhIL-11才能更加合理地防治血小板减少 指南(全文)
- 节能评估报告编制要求 具体规定
- 基于智能巡检机器人与PLC系统联动控制设计和实现电子信息工程专业
- 毕业设计(论文)VFP小说租阅管理系统
- 河南省内影响工程选址的主要活动断裂资料汇编(最终版)
- (完整版)幼儿园教师优质课评分表
- 河北省工伤职工停工留薪期分类目录 (工伤)
评论
0/150
提交评论