C++用递归方法完成全排列.doc_第1页
C++用递归方法完成全排列.doc_第2页
C++用递归方法完成全排列.doc_第3页
C++用递归方法完成全排列.doc_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

实验报告规范表达式求值 数媒一班 张燕捷 10389128 2011/10/161需求分析(1) 输入的形式;输入一个小于1000的整数(2) 输出的形式;在下一行输出以整数型输出全排列的情况(3) 程序所能达到的功能;能够输出全排列的数组(4) 测试数据:4,52概要设计swap()函数:参数为两个整数,传值引用可以交换两个整数的值,用交换的方法可以避免全排列时相同的数字会有重复Cal()函数:参数为一个指针和两个整数型,调用了swap函数,进行递归运算的功能函数。Main函数:输入整数型,调用递归函数3调试分析程序设计的时候找不到好的方法避免重复的现象,最后明白了可以用数组交换的方法实现,很轻松地解决了问题。4用户使用说明直接输入一个小于1000的整数后按enter即可出现结果。此程序做的是交换操作,时空复杂度为2n - 15测试结果6附录代码如下:/ FileName : 全排列.cpp/ Creator : 10389128 YanjieZhang/ Date : 2011.11.5/ Comment : the main function for Full arrangement/#include using namespace std;inline void swap( int &a, int &b )/交换函数,利用交换的方法可以避免重复的现象int tmp;tmp = a;a = b;b = tmp;inline void cal( int *m,int a,int b )/递归调用函数int tmp2;if( a = 1 ) /当要处理的数字只有一个时for( tmp2 = 0; tmp2 b; tmp2+ )cout mtmp2;cout endl;else /多个数字要处理时for( tmp2 = 0; tmp2 a; tmp2+ )swap( m tmp2 , m a - 1 );/将mtmp2放在末尾,每递归一次将末尾提前一位cal( m, a - 1, b );swap( m tmp2 , m a - 1 );int main()int n, i;int array1000;cout 请输入一个整数: n;cout 得到的全排列数组如下: endl;for( i = 0; i n;

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论