- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
作业与复习
《算法设计与分析》作业与复习题
1 (52页例1)分别用循环与递归的方法编程求数列的和:S=1-1/3!+1/5!-1/7!+…+1/(2n-1)!,说明一般使用C语言编程你只能近似计算到前3-4项,请对只计算到前3项说明你的算法程序工作的过程和结果(说明时可取:1/3!=1/6≈0.166667,1/5!=1/120≈0.008333)……,最上面的编为第64号,证明第i号盘子将被移动2i-1次。* 若增加一个柱,即有A、B、C、D四个柱,其余要求不变,请编写这时的移动程序并估算移动次数,说明这时移动次数的减少情况。
***Hanoi问题及类似指数级算法求解问题能否改进为多项式级?
4 (117页习题(7))编写计算Ackermann函数ack(m, n)的递归函数,说明用以求解ack(1,9)、ack(2,8)、ack(3,3)、ack(4,1)时你的算法程序工作的过程和结果。**编写不用递归的计算程序。
5 求解递归方程:(1) f(1)=1;f(n)=2*f(n-1)+1; (2) f(1)=2;f(n)=3*f(n-1)+2; (3) f(1) =s; f(n) =
a*f(n-1)+b ; (4) f(1)=f(2)=1;f(n)=f(n-1)+f(n-2);(5)f(0)=0;f(1)=3;f(n)=2f(n-1)+3f(n-2);
6 分别用循环与递归的方法编程求f(n)=2n -1的值。然后讨论程序执行乘法的次数是多少?考虑怎样重新编写程序求xn,使乘法次数尽可能少。要求用循环和递归的形式各编一个。
7 (78页例18)给79页程序加入注释行,将该程序改写为函数形式,说明程序对实例12345678901*13的运行过程和结果。
8 (79页例19)给80-81页程序加入注释行,将该程序改写为函数形式,再利用函数调用计算100!、2100(可以由此理解增长速度阶乘要超过指数)、264-1(由此验证264-1秒约等于5800亿年)。(118页习题(11))编程求n!末尾有多少个0,注意此题可以用大整数计算求出n!后再查末尾0的个数,但并不必要,只求末尾0的个数可以简单得多。
9 (117页习题(1))请先编写一个函数实现两个大整数相加,然后完成本题。再继续求第100个Fibonacci数的精确数值,可以参考114页例40,注意用该例方法或其它一般方法只能大约求到第40个Fibonacci数,因为Fibonacci数的增长很快就会超过长整型数范围,所以求较大的Fibonacci数必须用大整数计算。列出你所知道的计算Fibonacci数的方法,说明应用递归方法需要进行加法的次数与Fibonacci数同步增长,证明 20.5n F(n) 20.7n , (n6) ,由此说明Fibonacci数是指数增长的。给出不用递归用递推方法的求第n个Fibonacci数的算法,说明算法需要进行加法的次数线性增长。给出利用Fibonacci数通项公式计算第n个Fibonacci数的算法,*能否找到回避无理数或近似的小数计算的算法。
10 编程求解“物不知其数”类问题,即已知若干余数求本数类问题(参考教材112页例39)。给出几个运行实例。如若分别除以3、5、7得到的三个余数是2,1,5,问此数是多少?说明若分别除以3、6、7得到的三个余数是2,1,5,则这样的数是不会存在的。请继续完成118页习题(17),189页(7)。
11说明n位大整数乘n位大整数普通乘法所需要的一位数乘法的次数。说明大整数乘大整数分治算法的实现框架,说明所需要的一位数乘法的次数,说明用这个方法计算9118*3289的计算过程和结果。给出一个可以对不多于5位的两个整数正确相乘的可以说明整数乘法分治算法思想的实现程序。请继续完成190页习题(12), 给出一个2*2矩阵如此相乘的例子。
12说明怎样利用大整数乘法分治算法的思想,用3次乘法实现计算:(1)两个一次多项式相乘,如(2x+1)*(4x+3);(2)两个复数相乘,如(2+i)*(4+3i)。编写实现程序。
13 设计算法把一个真分数表示为分子为1的分数之和的形式,希望所形成和中用到的分子为1的分数尽可能少。说明如果要求形成的和中的分数分母是奇数,或者是偶数,或者是2的方幂,会发生什么情况?
14 (183页例27)编写用动态规划法求最长公共子序列的程序,对下例说明程序运行的过程和结果: “abcabc”、“cbacba”。(191页19题)编写用动态规划法求组合数的程序,以求组合数C42为例说明程序的工作过程和结果。
15 (200页例2,204页例3)走迷宫问题。为书上的求解程序加入详细的注释行。举出一个实例说明算法的工作过程和结果。
《算法设计与分析》 2010年期末试卷( A 卷)
一:(
文档评论(0)