算法设计与分析C语言描述陈慧南版课后答案Word下载.docx

上传人:b****3 文档编号:16872946 上传时间:2022-11-26 格式:DOCX 页数:15 大小:63.60KB
下载 相关 举报
算法设计与分析C语言描述陈慧南版课后答案Word下载.docx_第1页
第1页 / 共15页
算法设计与分析C语言描述陈慧南版课后答案Word下载.docx_第2页
第2页 / 共15页
算法设计与分析C语言描述陈慧南版课后答案Word下载.docx_第3页
第3页 / 共15页
算法设计与分析C语言描述陈慧南版课后答案Word下载.docx_第4页
第4页 / 共15页
算法设计与分析C语言描述陈慧南版课后答案Word下载.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

算法设计与分析C语言描述陈慧南版课后答案Word下载.docx

《算法设计与分析C语言描述陈慧南版课后答案Word下载.docx》由会员分享,可在线阅读,更多相关《算法设计与分析C语言描述陈慧南版课后答案Word下载.docx(15页珍藏版)》请在冰豆网上搜索。

算法设计与分析C语言描述陈慧南版课后答案Word下载.docx

当n

22

i8时,5n8n25n

2n

4n2,

所以,可选

c4

,no

8。

nno,

8n24n,所以,5n

(3)

由(1

)、

(2)可知,取g4,c2

5

,n。

8,

当nn0时,

有&

n2

qn2,所

 

以5n

28n

2-11.

(1)当

n

3时,logn

nlog3n,所以f(n)

20n

logn21n,g(n)

nlog3n2n。

选c

21

2,

no

3。

对于n

no,f(n)cg(n),即

(g(n))。

注意:

f(n)和g(n)的关系。

时,lognn

logn,所以f(n)

n2/log

nn2,g(n)nlog

nn。

可选c

1,

4。

对于nn°

,f(n)

因为f(n)(logn)logn

nlog(logn),g(n)n/lognnlogn2。

当n

4时,f(n)nlog(logn)

g(n)nlogn2n。

所以,可选c1,n4,对于nn°

f(n)cg(n),即f(n)

2-17.证明:

n2,贝Ui

Tn

2T

n2nlogn22T

ncn|n

22log-

2222

2nlogn

22T

2nlognIog2

22nlogn2n

222T23

2nlog*22nlogn

2n

23T

23

2nlognIog4

22nlogn

32nlogn2n

4n

LL

2kT

2k

2knlogn2n

4nL2nk

1

21t

iInlogn2n

4nL2ni

42nlognlogn1i

2i1n

2nlog2

n2nlognlog

2n3logn2

nlognnlogn

当n2时,Tn2nlog2n。

所以,Tnnlog2n。

第五章

5-4.SolutionTypeDandC1(intleft,intright)

{

while(!

Small(left,right)&

&

left<

right)

intm=Divide(left,right);

if(x<

P(m)right=m-1;

elseif(x>

P[m])left=m+1;

elsereturnS(P)

}

5-7.template<

classT>

intSortableList<

T>

:

BSearch(constT&

x,intleft,intright)const{

if(left<

=right)

intm=(right+left)/3;

if(x<

l[m])returnBSearch(x,left,m-1);

elseif(x>

l[m])returnBSearch(x,m+1,right);

elsereturnm;

return-1;

9.

26

1357

证明:

因为该算法在成功搜索的情况下,关键字之间的比较次数至少为

logn,至多为logn1。

好、最坏情况的时间复杂度为logn

假定查找表中任何一个元素的概率是相等的,为-,那么,

11.

步数

3

初始时

[1

1]

OO

[1]

排序结果

6

7

8

[4

3]

[8

5]

[3

J卩

2]

[2]

[5]

12.

(1)证明:

当n0或n1或n2时,程序显然正确。

当n=right-left+1>

2时,程序执行下面的语句:

intk=(right-left+1)/3;

StoogeSort(left,right-k);

StoogeSort(left+k,right);

1首次递归StoogeSort(left,right-k);

时,序列的前2/3的子序列有序。

2当递归执行StoogeSort(left+k,right);

时,使序列的后2/3的子序列有序,经过这两次递归排序,使原序

列的后1/3的位置上是整个序列中较大的数,即序列后1/3的位置上数均大于前2/3的数,但此时,前2/3

的序列并不一定是有序的。

3再次执行StoogeSort(left,right-k);

使序列的前2/3有序。

经过二次递归,最终使序列有序。

所以,这一排序算法是正确的。

(2)最坏情况发生在序列按递减次序排列。

0,

21,n

1。

设n

i

23,

则i

logn

—。

Iog3

c2

n1

33

4,

19

4c“

3-

n31LL

9

3i

3i1

3i2L

3i2

logn1

3nIog311

——2—

222

Iog31

冒泡排序最坏时间复杂度为

n,队排序最坏时间复杂度为nIogn,快速排序最坏时间复杂度为

nIogn。

所以,该算法不如冒泡排序,堆排序,快速排序。

13.template<

select(T&

x,intk)

if(m>

n)swap(m,n);

if(m+n<

k||k<

=0){cout<

<

"

OutOfBounds"

;

returnfalse;

}int*p=newtemp[k];

intmid,Ieft=0,right=n-1,cnt=O,j=O,r=O;

for(inti=0;

i<

m;

i++)

while(k>

0)

do

mid=(left+right)/2;

if(a[mid]<

b[i])left=mid;

elseif(a[mid]>

b[i])right=mid;

else{cnt=mid;

break;

}}while(left<

right-1)if(a[left]<

b[i])t=left;

elset=left-1;

if(k>

cnt){

if(cnt>

for(j=0;

j<

cnt;

j++){

temp[j]=a[r];

r++;

left=cnt;

k-=cnt;

else

temp[j]=b[i];

left=0;

k--;

else{

k;

returntemp[k_1];

第八早

1•由题可得:

直P_P2_P3_P4_P5_P61051576183w0'

则'

w2'

w3'

w4'

w5'

w62357V41

21

最大收益为10515618355丄。

6-9.

普里姆算法。

因为图G是一个无向连通图。

所以n-1<

=m<

=n(n-1)/2;

O(n)<

=0(n2);

克鲁斯卡尔对边数较少的带权图有较高的效率,而mn1.99n2,此图边数较多,接近完全图,

故选用普里姆算法。

6-10.

T仍是新图的最小代价生成树。

假设T不是新图的最小代价生成树,T'

是新图的最小代价生成树,那么cost(T'

)<

cost。

cost(T-c)-1)<

cost(t)-c(n-1),即在原图中存在一颗生成树,其代价小于T的代价,这与题设中T是原图

的最小代价生成树矛盾。

所以假设不成立。

证毕。

第七章

1.Bcost(1,0)=0;

Bcost(2,1)=c(1,1)+Bcost(1.0)=5

Bcost(2,2)=c(1,2)+Bcost(1,0)=2

Bcost(3,3)=min{c(2,3)+Bcost(2,2),c(1,3)+Bcost(2,1)}=min{6+2,3+5}=8

Bcost(3,4)=c(2,4)+Bcost(2,2)=5+2=7

Bcost(3,5)=min{c(1,5)+Bcost(2,1),c(2,5)+Bcost(2,2)}=min{3+5,8+2}=8

Bcost(4,6)=min{c(3,6)+Bcost(3,3),c(4,6)+Bcost(3,4),c(5,6)+Bcost(3,5)}=min{1+8,6+7,6+8}=9

Bcost(4,7)=min{c(3,7)+Bcost(3,3),c(4,7)+Bcost(3,4),c(5,7)+Bcost(3,5)}=min{4+8,2+7,6+8}=9

Bcost(5,8)=min{c(6,8)+Bcost(4,6),c(7,8)+Bcost(4,7)}=min{7+9,3+9}=12

2.向后递推的计算过程如上题所示向前递推过程如下:

cost(5,8)=0cost(4,6)=7,cost(4,7)=3cost(3,3)=min{1+cost(4,6),4+cost(4,7)}=7,cost(3,4)=min{6+cost(4,6),2+cost(4,7)}=5cost(3,5)=min{6+cost(4,6),2+cost(4,7)}=5cost(2,1)=min{3+cost(3,3),3+cost(3,5)}=8cost(2,2)=min{6+cost(3,3),8+cost(3,5),5+cost(3,4)}=10cost(1,0)=min{5+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.cha

rA[

8]={

0'

'

x

J

z'

y'

z

>

>

y'

x'

}

B[

'

x'

'

(a)c[i][j](b)s[i][j]

所以,最长公共字串为(x,y,z,z)。

11.voidLCS:

CLCS(inti,intj)

if(i==0||j==0)return;

if(c[i][j]==c[i-1][j-1]+1)

CLCS(i-1,j-1);

Cout<

a[i];

elseif(c[i-1][j]>

=c[i][j-1])CLCS(i-1,j);

elseCLCS(i,j-1);

}12.intLCS:

LCSLength()

for(inti=1;

i<

=m;

i++)c[i][0]=0;

for(i=1;

=n;

i++)c[0][i]=0;

i++)

for(intj=1;

j<

j++)

if(x[i]==y[j])c[i][j]=c[i-1][j-1]+1;

elseif(c[i-1][j]>

=c[i][j-1])c[i][j]=c[i-1][j];

elsec[i][j]=c[i][j-1];

returnc[m][n];

10

15.S1{(0,0)},S10{(10,2)},

01

S0{(0,0),(10,2)},S11{(15,5),(25,7)},

S1{(0,0),(10,2),(15,5),(25,7)},S12{(6,8),(16,10),(21,13),(31,15)},

S2{(0,0),(6,8),(16,10),(21,13),(31,15)}S13{(9,1),(15,9),(25,11),(30,14),(40,16)}

S3{(0,0),(6,8),(15,9),(16,10),(21,13),(30,14),(31,15)}

8-1.状态空间:

描述问题的各种可能的情况,一种情况对呀状态空间的一个状态。

显示约束:

用于规定每个xi取值的约束条件称为显示约束隐式约束:

用于判定一个候选解是否为可行解的条件问题状态:

在状态空间树中的每个节点称为一个问题状态解状态:

如果从根到树中某个状态的路径代表一个作为候选解的元组,则该状态为解状态答案状态:

如果从根到树中某个状态的路径代表一个作为可行解的元组,则该状态为解状态。

活结点:

回溯法从开始结点出发,以深度优先的方式搜索整个解空间,这个开始结点就成为一个活结点。

未检测的结点称为活结点

扩展结点:

算法从x出发,访问x的摸个后继结点y,则x被称为扩展结点

Y的子树

约束函数:

一个约束函数是关于部分向量的函数Bk(x0,x1xk),它被定义为:

如果可以判定

上不含任何答案状态,则Bk(x0,x1xk)为false,否则为true.

剪枝函数:

约束函数和限界函数的目的相同,都是为了剪去不必要搜索的子树,减少问题求解所需实际生成的状态节点数,他们统称为剪枝函数

8-2

boolplace(intk,int,I,int*x){

For(intj=0,j<

k,j++)

If((x[j]==i)||(abs(x[j]-j)==abs(j-k)))

Returnfalse;

Returntrue;

Voidnqueens(intk,intn,int*x)

For(inti=0;

n;

If(place(k,I,x))

X[k]=I;

If(k==n-1

For(i=0;

i++)cout<

x[i]<

endl;

Return;

Elsenqueens(k+1,n,x)

Voidnqueens(intn,int*x)

Nqueens(0,n,x);

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 幼儿教育 > 唐诗宋词

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1