


版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年叔丁基苯酚项目发展计划
- 2025年试验机械相关检测仪器项目合作计划书
- 健康饮食产业园项目实施方案
- 2025年糖、加工糖及制糖副产品项目发展计划
- 2025年稀有金属及稀土金属材料合作协议书
- 2025年城市污水处理厂智能化升级改造对智能化控制系统的影响报告
- 工业互联网平台数据备份与恢复策略在2025年智能证券分析领域的应用研究报告
- 工业互联网平台同态加密技术安全性评估与分析报告
- 工业互联网平台数据清洗算法在新能源行业的应用对比研究
- 2025年智能家居互联互通标准与产业布局优化策略报告
- 米酒营销知识培训课件
- 运动课跳房子课件
- 造影剂过敏急救处理规范
- 意式极简全案设计
- 2025年中国邮政集团有限公司辽宁省分公司校园招聘笔试备考试题及完整答案详解1套
- 多灾种耦合应对-洞察及研究
- 朗读协会工作报告
- T/CERDS 1-2021企业高质量发展评价指标
- 2025农发银行笔试题库及答案
- 湖北省黄冈市黄梅实验中学2025届数学八下期末统考试题含解析
- 2025届上海市闵行区七下数学期末学业水平测试模拟试题含解析
评论
0/150
提交评论