版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、有重复元素的排列问题一 问题描述 :设 R=r1,r2, r n 是要进行排列的 n 个元素,其中 r1,r2 rn 元素可能相同,请设计出一个算法,列出 R 中元素的所有不同排列。 在给定的 n 以及待排列的 n 个元素,计算出这 n 个元素的所有不同排列。要求输入输出:输入:第一行是元素个数 n,1=n=15,接下来的 1行是待排列的 n 个元素,元素中间不要加空格。 输出:程序运行结束时,将计算出 n个元素的所有不用排列,最后 1 行中的数是排列总数。例如:Inputaaccoutputaacc acac acca caac caca ccaa三 设计概要:1)数据类型定义:int j=
2、0int n char list int k ; int m int flag定义 j 初始为 0,用来计数总共排列数 输入排列元素的个数 定义数组 list 存放排列元素 数组中元素第 k 位到第 m 位的排列 标识符2)程序流程图:void Perm(int k,int m)k=mY3)模块间的调用:四 详细算法设计:if ( 是否一个元素 )for( 寻找到该排列元素 ) printf( 输出该元素 ); 排列数加一else / 还有多个元素待排列,递归产生排列 for(从第 k 个直到第 m 个元素 ) flag=0;for(p=k;p<i;p+)if(listp=listi)f
3、lag=1;if(flag=1) continue; Swap(listk,listi); Perm(list,k+1,m); Swap(listk,listi);void Swap(char &a,char &b) 交换元素五 调试分析:1)在调试过程中主要遇到了一些简单的符号错误,其次就是在实现排列perm()时,对元素是否重复的判断出现了问题;对符号方面的错误就只能是细心的去发现然后再修改,在排列元素重复上初时是对算法的实现 在这判断上考虑欠缺,导致再运行通过后进行测试时出现了和预期结果不同的情况,经思考后修改最终实现了 该算法。2)由于该程序的算法实现起来比较简单,对算
4、法的时间和空间要求也比较低,所以也无需再想去改进算法 的时空分析复杂度。3)在选用测试用例时,运用白盒测试法的覆盖来测试,选用了从1 个元素到多个元素,从全不相同元素到有重复元素等来进行测试,所以测试用例应该得当。4)在进行调试时,遇到最多的首先就是小小的符号问题出错误,比如漏了分号,中英符号混了,从而出现 了编译错误,这告诉我平时编写代码时要养成良好的习惯,例如在符号问题,大括号问题等;其次就是程序上 出现了问题,包括了对算法考虑得不周全,例如边界问题等等;有时会出现修改了某处错误,但新的错误又出 现了,所以在调试过程中,应首先避免了符号上的错,然后再从全局上先去考虑下出错原因,再根据出错点
5、进 行修改。六 测试结果:4七 源程序:#include"stdio.h"int j=0;void main() /main 函数,调用 swap 和 perm int n;void Swap(char &a,char &b);void Perm(char list,int k,int m); scanf("%d",&n);char list16;scanf("%s",list);Perm ( list, 0, n-1);printf("%dn",j);void Swap(char &
6、;a,char &b) / 交换元素char temp =a;a=b;b=temp;m 的所有排列void Perm(char list,int k,int m)/产生 listk : int i,p;int flag;void Swap(char &a,char &b);if(k=m) / 只剩下一个元素 for( i = 0;i <= m;i+) printf("%c",listi); j+; printf("n");else / 还有多个元素待排列,递归产生排列for(i=k;i<=m;i+) flag=0;for(p=k;p<i;p+)if(li
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 社会工作实验室土地转让协议
- 航天公司账户管理办法
- 水利水电桩基施工合同
- 保健品研发顾问聘用协议
- 地下矿藏勘探挖机租赁合同
- 个性化旅游服务私家车租赁协议
- 员工违规扣分细则
- 临时建筑钢板租赁协议
- 互联网企业合同专用章管理指南
- 徐州汽车4S店租赁合同
- 镀锌线专业词汇表
- 股权代持股东会决议
- 第17课 盼 六年级语文上册同步分层作业设计系列(统编版)
- 文化旅游安全培训
- 数字技术在幼儿科学教育中的应用与实践
- 初中物理光学难题难度含解析答案
- 公平竞争审查制度实施细则
- 文明礼仪从我做起主题班会课件
- 国家开放大学电大《小学语文教学研究》形考任务3-4试题及答案
- 大学生职业生涯规划与就业指导第2版(高职)全套教学课件
- 《生产成本控制技巧》课件
评论
0/150
提交评论