算法设计与分析C语言描述陈慧南版课后答案_第1页
算法设计与分析C语言描述陈慧南版课后答案_第2页
算法设计与分析C语言描述陈慧南版课后答案_第3页
算法设计与分析C语言描述陈慧南版课后答案_第4页
算法设计与分析C语言描述陈慧南版课后答案_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

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

文档简介

1、第一章1-3.最大公约数为1。快1414倍。主要考虑循环次数,程序1-2的while循环体做了 10次,程序1-3的while循环体做了 14141次(14142-2循环)若考虑其他语句,则没有这么多,可能就601倍。第二章2-8.(1)画线语句的执行次数为log n。匚:'(log n)。划线语句的执行次数应该理解为一格整体。(2)画线语句的执行次数为: 仁门 呼1 2)。匸心3)。i 4 j 4 k 4(3)(4)画线语句的执行次数为,n 。0(. n)。(n 1)(n 3)当n为奇数时画线语句的执行次数为22-10.( 1 )当 n -1 时,5n当n为偶数时画线语句的执行次数为

2、2-8n,2_5n ,所以,可选c = 5 ,山=1。对于门一,2 25n -8n 2= O(n )。2 2f (n) =5n -8n 2 乞 5n,所以,2 2 2 2(2 )当 n-8 时,5n - 8n 2 5i -n 2 _ 4n ,所以,可选 c = 4 , n0 =8。对于 n _ 让,f (n)=5n2 8n +2 4n2,所以,5n2 8n +2 =0(n2)。2 2 2(3 )由(1)、( 2)可知,取c,=4,c2=5,n0=8,当 n 启 n0 时,有 qn 兰 5n 8n +c2 n,所以5n2 -8n 2 - 0(n2)。2-11. (1)当 n -3时,log n

3、: n : log3 n,所以 f (n) = 20n log n : 21n , g(n) = n log3 n 2n。可21选 c = , n0 =3。对于 nn°, f(n)-cg(n),即 f (n) Y)(g(n)。注意:是 f(n)和 g(n)的关系。2 2 2 2 2(2、当 n - 4时,logn : n : log n,所以 f (n) = n /logn : n , g(n)二 nlog n _ n。可选 c = 1, n0 = 4。对于 n ,f(n) < n2 乞 cg(n),即 f (n)(g(n)。(3)因为 f(n )=(log n)ogn = n

4、log(logn), g(n) = n/log n = n logn2。当 n4时,f(n) = nlog(lognn , g(n)二nlogn2 : n。所以,可选 c =1, n° =4,对于 n _ n0, f (n) _ cg(n),即 f (n)-:(g(n)。 第二章2-17.证明:设 n = 2,则 i = log n。当 n2时,T n _2nlog2 n。 所以,T(n )=0(n log $ n )。第五章5-4. SolutionType DandC1(int left,int right)while(!Small(left,right)&&le

5、ft<right)int m=Divide(left,right);if(x<P(m) right=m-1;else if(x>Pm) left=m+1;else return S(P)5-7. template <class T>int SortableList<T>:BSearch(const T&x,int left,int right) constif (left<=right)int m=(right+left)/3;if (x<lm) return BSearch(x,left,m-1);else if (x>lm

6、) return BSearch(x,m+1,right);else return m;return -1;第五章9.证明:因为该算法在成功搜索的情况下,关键字之间的比较次数至少为|.logn,至多为|logn 1。在不成功搜索的情况下,关键字之间的比较次数至少为|log n 1,至多为|log n 2。所以,算法的最好、最坏情况的时间复杂度为心log n。1假定查找表中任何一个元素的概率是相等的,为一,那么,n不成功搜索的平均时间复杂度为Au n Elog n ,n +1I +n E-2n + n E,成功搜索的平均时间复杂度为As n1 log n。nnn其中,I是二叉判定树的内路径长度,

7、E是外路径长度,并且 E =1 2n。11.步数012345初始时11111111111OO211111OO311111OO411111OO排序结果11111OO步数01234567初始时5583432OO14233585OO23234585OO33234585OO42334585OO52334558OO排序结果2334558OO12. (1 )证明:当n=0或n=1或n=2时,程序显然正确。当n=right-left+1>2时,程序执行下面的语句:int k=(right-left+1)/3;StoogeSort(left,right-k);StoogeSort(left+k,righ

8、t);StoogeSort(left,right-k); 首次递归StoogeSort(left,right-k);时,序列的前2/3的子序列有序。 当递归执行StoogeSort(left+k,right);时,使序列的后2/3的子序列有序,经过这两次递归排序,使原序列的后1/3的位置上是整个序列中较大的数,即序列后1/3的位置上数均大于前2/3的数,但此时,前2/3的序列并不一定是有序的。 再次执行StoogeSort(left,right-k); 使序列的前2/3有序。经过二次递归,最终使序列有序。所以,这一排序算法是正确的。(2)最坏情况发生在序列按递减次序排列。f2n 'T(

9、O)=T=0, T(2)=1, T(n )=3T +1I 3丿Iog3 -1冒泡排序最坏时间复杂度为O n2,队排序最坏时间复杂度为O nlog n,快速排序最坏时间复杂度为门 nlogn。 所以,该算法不如冒泡排序,堆排序,快速排序。13. template <class T>select (T&x,int k) if(m>n) swap( m,n);if(m+n<k|k<=0) cout<<"Out Of Bounds" return false;int *p=new tempk;int mid,left=0,right

10、 =n-1,c nt=0,j=0,r=0;for(int i=0;i<m;i+)while(k>0) domid=(left+right)/2;if(amid<bi) left=mid;else if(amid>bi) right=mid;else cnt=mid; break; while(left<right-1) if(aleft<bi) cnt=left; else cnt=left-1; if(k>cnt)if(cnt>0)for( j=0;j<cnt;j+)tempj=ar;r+;left=cnt;k-=cnt;elsetemp

11、j=bi;left=0;k-;elsefor( j=O;j<k;j+)tempj=ar;r+;left=c nt;k-=cnt;return tempk-1;第八早1.由题可得:Pl PPLP4_P5_PLf10 5157 6 18 3 lW0 , Wi, w2, w3 , w4 , w5 , Wj 丿 12,3, 5,7,1,4,1 J所以,最优解为$v 12xmls崎1,0,1,1,1,最大收益为10 5 - 15 6 18 3=55丄。33第八早8.6-9 .普里姆算法。因为图G是一个无向连通图。所以 n-1<=m<=n (n-1)/2;0(n )<=m<=

12、0( n 2);克鲁斯卡尔对边数较少的带权图有较高的效率,而n1.99n2,此图边数较多,接近完全图,故选用普里姆算法。6-10 .T仍是新图的最小代价生成树。证明:假设 T不是新图的最小代价生成树,T'是新图的最小代价生成树,那么t(T' )<cost(T)cost(T'-)n-1)<cost(t)-c(n-1),即在原图中存在一颗生成树,其代价小于T的代价,这与题设中T是原图的最小代价生成树矛盾。所以假设不成立。证毕。第七章1. Bcost(1,0)=0;Bcost(2,1)=c(1,1)+Bcost(1.0)=5Bcost(2,2)=c(1,2)+Bc

13、ost(1,0)=2Bcost(3,3)=mi nc(2,3)+Bcost(2,2),c(1,3)+Bcost(2,1)=mi n6+2,3+5=8Bcost(3,4)=c(2,4)+Bcost(2,2)=5+2=7Bcost(3,5)=mi nc(1,5)+Bcost(2,1),c(2,5)+Bcost(2,2)=mi n3+5,8+2=8Bcost(4,6)=mi nc(3,6)+Bcost(3,3),c(4,6)+Bcost(3,4),c(5,6)+Bcost(3,5)=mi n1+8,6+7,6+8=9Bcost(4,7)=mi nc(3,7)+Bcost(3,3),c(4,7)+Bc

14、ost(3,4),c(5,7)+Bcost(3,5)=mi n4+8,2+7,6+8=9Bcost(5,8)=mi nc(6,8)+Bcost(4,6),c(7,8)+Bcost(4,7)=mi n7+9,3+9=122.向后递推的计算过程如上题所示向前递推过程如下:cost(5,8)=0cost(4,6)=7,cost(4,7)=3cost(3,3)=min1+cost(4,6),4+cost(4,7)=7,cost(3,4)=min6+cost(4,6),2+cost(4,7)=5cost(3,5)=min6+cost(4,6),2+cost(4,7)=5cost(2,1)=min3+co

15、st(3,3),3+cost(3,5)=8cost(2,2)=min6+cost(3,3),8+cost(3,5),5+cost(3,4)=10cost(1,0)=min5+cost(2,1),2+cost(2,2)=12所以, d(4,6)=d(4,7)=8, d(3,3)=d(3,4)=d(3,5)=7, d(2,1)=5, d(2,2)=4, d(1,0)=2从 s 到 t 的最短路径为 (0, d(1,0)=2, d(2,2)=4, d(3,4)=7, d(4,7)=8),路径长为 12 。第七章9. char A8= 0' , ' x '>>>

16、;>>>,' z' , ' y' ,' z',' z' , ' y' ,' x' B8= 0 ' ,''z'x', , '>>>>>>y ' , ' y' , ' z' , '> > > )x ' , ' z '(a) ci j(b )si j所以,最长公共字串为(x,y,z,z) 。第七章11. void L

17、CS:CLCS ( int i, int j )if ( i = = 0 | j = = 0)return;if (ci j = = ci-1 j-1+1)CLCS ( i-1,j-1);Cout<<ai;else if ( ci-1j>=cij-1) CLCS (i-1,j);else CLCS (i,j-1);12. int LCS:LCSLength()for ( int i =1; i<=m; i+)ci0=0;for (i =1; i<=n; i+)c0i=0;for (i =1; i<=m; i+)for (int j =1; j<=n;

18、j+)if (xi= =yj)ci j=ci-1j-1+1;else if (ci-1j>=cij-1)cij=ci-1j;else ci j=cij-1;return cm n;15. S =(0,0), S;二(10,2),s0 =(0,0),(10,2) ,S11 =(15,5),(25,7),S1 =(0,0),(10,2),(15,5),(25,7),(6,8),(16,10),(21,13),(31,15),S(0,0),(6,8),(16,10),(21,13),(31,15) & = (9,1), (15,9),(25,11),(30,14),(40,16),8-1状态空间:描述问题的各种可能的情况,一种情况对呀状态空间的一个状态。显示约束:用于规定每个 xi 取值的约束条件称为显示约束 隐式约束:用于判定一个候选解是否为可行解的条件 问题状态:在状态空间树中的每个节点称为一个问题状态 解状态:如果从根到树中某个状态的路径代表一个作为候选解的元

温馨提示

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

评论

0/150

提交评论