算法部分作业答案.doc

  1. 1、本文档共16页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
算法部分作业答案

1.1算法:是对特定问题求解步骤的一种描述,是指令的有限序列。 程序:当一个算法用某种程序设计语言来描述时,得到的就是程序,也就是说,程序是用某种程序设计语言对算法的具体实现. 算法有输入、输出、确定性、能行性和有限性等特征,当不具备有穷性时,只能叫做计算过程,而不能称之为算法,算法可以终止,而程序没有此限制。 1.2程序证明和程序测试的目的各是什么? 程序证明是确认一个算法能正确无误的工作. 程序测试的目的是发现错误 1-9 解: n!的递归定义: 求解n!的递归函数 long Factorial (long n) { if(n0) { cout”error!”; exit(0); } if(n==0) return 1; else return n *Factorial (n-1); } 使用归纳法,证明上题所设计的计算n!的递归函数的正确性 证明(归纳法证明): (1)首先,如果n=0,那么程序执行 if(n==0) return 1; 返回1,算法显然正确; (2)假定函数Factorial对nk(1)能正确运行,那么,当n=k时,算法必定执行: else return k *Factorial (k-1); 因为Factorial (k-1)正确,所以,当n=k时,程序运行正确 综合以上两点,可得程序正确. 证毕. 2-1, 简述衡量一个算法的主要性能标准,说明算法的正确性与健壮性的关系 答: 衡量一个算法的主要性能指标有: 正确性,简单性,高效低存储,最优性 算法的正确性与健壮性的关系: 所谓算法的正确性:是指在合法的输入下,算法应实现预先规定的功能和计算精度要求;所谓算法的健壮性,是指当输入不合法时,算法应该能按某种预定的方式做出适当的处理; 正确的算法不一定的是健壮的,健壮的算法也不一定是完全正确的.正确性和健壮性是相互补充的.一个可靠的算法,要求能在正常情况下正确的工作,而在异常情况下,亦能做出适当处理. 2-9(1)设计一个C/C++程序,实现一个n*m的矩阵转置,原矩阵与其转置矩阵保存在二维数组中. Void reverse(int **a,int **b,int n,int m) { For(int i=0;in;i++) For(int j=0;jm;j++) b[j][i]=a[i][j]; } (2)使用全局变量count,改写矩阵转置程序,并运行修改后的程序以确定此程序所需的程序步 Void reverse(int **a,int **b,int n,int m,int count) { int i=0; count++; int j=0; count++; For(;in;i++) For(;jm;j++) { count++; b[j][i]=a[i][j]; count++; } } 2-10 试用定义证明下列等式的正确性 (1) 5n2-8n+2=O(n2) 证明: 因为当n0=1,C=6时,当nn0时,有5n2-8n+2=6n2 2-16 使用递推关系式计算求n!的递归函数的时间(即分析1-9题中的函数的时间复杂度),要求使用替换和迭代两种方法分别计算之. 解: 分析1-9题中的函数的时间复杂度:用基本运算乘法的运算次数作为衡量时间复杂度的量 当n=0时,程序执行if(n==0) return 1;,并没有做乘法,故T(0)=0;当n=1时程序执行n *Factorial (n-1);此时T(n)= T(n-1)+1故: 替换法: T(0)=0,T(1)=1,T(2)=2----- 总结得到:T(n)=n; 归纳法证明: (1),当n=0时,T(0)=0,结论成立; (2)假设当kn时,有 T(k)=k,那么,当k=n时,有T(n)=T(n-1)+1=(n-1)+1=n 所以,对所有n=0有T(n)=n;成立. 迭代法: T(n)=T(n-1)+1 =(T(n-2)+1)+1=((T(n-3)+1)+1)+1=....=T(0)+1+1......+1(n个1)=n 2-19 利用递归树计算递推方程 假设n=2k,那么,总共有logn+1(即k+1)层,非递归部分之和为 n2+n2/21+n2/22+…+n2/2k=(1+1/2+1/22+1/23+…+1/2logn)n2

文档评论(0)

dajuhyy + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档