完整word版习题答案第四章算法设计与分析吕国英Word文件下载.docx

上传人:b****5 文档编号:17768517 上传时间:2022-12-09 格式:DOCX 页数:25 大小:23.97KB
下载 相关 举报
完整word版习题答案第四章算法设计与分析吕国英Word文件下载.docx_第1页
第1页 / 共25页
完整word版习题答案第四章算法设计与分析吕国英Word文件下载.docx_第2页
第2页 / 共25页
完整word版习题答案第四章算法设计与分析吕国英Word文件下载.docx_第3页
第3页 / 共25页
完整word版习题答案第四章算法设计与分析吕国英Word文件下载.docx_第4页
第4页 / 共25页
完整word版习题答案第四章算法设计与分析吕国英Word文件下载.docx_第5页
第5页 / 共25页
点击查看更多>>
下载资源
资源描述

完整word版习题答案第四章算法设计与分析吕国英Word文件下载.docx

《完整word版习题答案第四章算法设计与分析吕国英Word文件下载.docx》由会员分享,可在线阅读,更多相关《完整word版习题答案第四章算法设计与分析吕国英Word文件下载.docx(25页珍藏版)》请在冰豆网上搜索。

完整word版习题答案第四章算法设计与分析吕国英Word文件下载.docx

n=(n+2)*2;

%d\n"

n);

return0;

3.

inta=54;

intm;

printf("

计算机先拿3张牌\n"

a=a-3;

while(a>

=0){

还剩%d张牌\n"

a);

printf("

你拿几张?

请输入:

"

if(n>

4||n<

1||n>

a)

错误!

重新拿牌\n"

{printf("

continue;

a=a-n;

if(a==0)break;

a=a-m;

4.

intd;

inta1,a2;

intfun(intn);

intmain(void){intn;

printf("

n=?

d=?

a仁?

a2=?

%d%d%d%d\n"

n,&

d,&

a1,&

a2);

printf("

fun(n));

intfun(intn)

{if(n==1)returna1;

if(n==2)returna2;

returnfun(n-2)-(fun(n-1)-d)*2;

5.

charchess[8][8];

intis_safe(introw,intcol);

intqueen(introw,intcol,intn);

intmain(void)

{inti,j;

8;

i++)for(j=0;

j++)chess[i][j]='

X:

queen(0,0,0);

i++){fora=0;

%c"

chess[i][j]);

intis_safe(introw,intcol){

inti,j;

if(chess[row][i]==Q)return0;

if(chess[i][col]==Q)

i=row;

j=col;

while(i!

=-1&

&

j!

=-1)

if(chess[i--][H==Q)return0;

=8){

if(chess[i--][j++]==Q)return0;

=8&

=-1){if(chess[i++][jT==Q)return0;

}i=row;

=8)

if(chess[i++][j++]==Q)return0;

return1;

intqueen(introw,intcol,intn){inti,j;

intresult=0;

if(n==8)return1;

elseif(is_safe(row,col))

chess[row][col]=Q;

resu-f+Hqueen(i-j-n+」=

if(resu-t>

0)

break-

refurn1-

e-se

宀chessrow=co-px「

refurnq

returnq

6.

巷nc-udeAsfdicLhv

infmain(void)宀infi-LK

for(n1

for〒1

kh33=++)

:

++)

kulooir

ir(k&

2H0)

ir(3丿+2*j+k/2K100)

prinW汁也&

d云召也&

2n&

2nvAn=-LLk=

7.

infmain(void)宀三二

ror(n1=AH10000=++)

ir(i&

2H1炉史&

3X2炉史&

5X4炉空&

6X5炉史&

7HH0)

prin犬-&

2rrD

 

8.

intmain(void)

intsum;

inta1,a2,a3,a4;

for(i=1000;

=9999;

a1=i%10;

a2=i/10%10;

if(a1!

=a2){

a3=i/100%10;

if(a1!

=a3&

a2!

=a3){

a4=i/1000;

=a4&

a3!

=a4)

Sum=(a1+a2+a3+a4)*(a1+a2+a3+a4);

if(i%sum==0)printf("

i);

9.

#defineN10voidmax_min(int*a,intm,intn,int*min1,int*min2,int*max1,int*max2);

inta[N]={2,3,4,5,34,7,9,6,43,21};

intmin1,min2;

intmax1,max2;

max_min(a,0,N-1,&

min1,&

min2,&

max1,&

max2);

printf("

min1=%d\nmin2=%d\nmax1=%d\nmax2=%d\n"

min1,min2,max1,max2);

voidmax_min(int*a,intm,intn,int*min1,int*min2,int*max1,int*max2){

intlmin1,lmin2,lmax1,lmax2;

intrmin1,rmin2,rmax1,rmax2;

intmid;

if(m==n)

*min1=*min2=*max1=*max2=a[m];

}elseif(m==n-1)

if(a[m]<

a[n]){

*min1=a[m];

*min2=a[n];

*max1=a[n];

*max2=a[m];

else{

*min1=a[n];

*min2=a[m];

*max1=a[m];

*max2=a[n];

mid=(m+n)/2;

max_min(a,m,mid,&

lmin1,&

lmin2,&

lmax1,&

lmax2);

max_min(a,mid+1,n,&

rmin1,&

rmin2,&

rmax1,&

rmax2);

if(lmin1<

rmin1){

if(lmin2<

*min1=lmin1;

*min2=lmin2;

*min2=rmin1;

elseif(rmin2vlmin1)

*min1=rmin1;

*min2=rmin2;

}else{

*min2=lmin1;

if(lmax1>

rmax1){if(lmax2>

rmax1){

*max1=lmax1;

*max2=lmax2;

*max2=rmax1;

elseif(rmax2>

lmax1)

{*max1=rmax1;

*max2=rmax2;

}else

*max1=rmax1;

*max2=lmax1;

10.

intadd(int*a,intflag,intright);

intmain(void){

inta[10]={123,4,5,6,7,8,9,10};

intsum=add(a,0,9);

sum);

intadd(int*a,intflag,intright)

if(flag==right)

returna[flag];

elseif(flag==right-1)

returna[flag]+a[right];

mid=(flag+right)/2;

returnadd(a,flag,mid)+add(a,mid+1,right);

11.

inta[5][3]={{-50,17,-42},{-47,-19,-3},{36,-34,-43},{-30,-43,34},

{-23,-8,-45}

};

intmax,n;

intsum=0;

5;

i++){

max=a[i][0];

n=0;

for(j=1;

3;

j++){if(a[i][j]>

max)

max=a[i][j];

n=j;

}sum+=max;

a[%d][%d]=%d\n"

i,n,max);

12.

/**File:

newmain.c*Author:

nirnava

*Createdon2010年4月22日,下午&

21*/

#include<

stdlib.h>

#defineN4voidmatrix_mul(int*mul1,int*mul2,int*mul3,intlength);

voidmatnx_add_sub(int*A,int*B,int*C,intm,charch);

voidupdate_half_value(int*A,int*B,intm);

voidget_half_value(int*A,int*B,intm);

intmain(void){inti,j;

intmul1[N*N]={123,4,5,6,7,8,9,10,1,2,3,4,5,6};

intmul2[N*N]={7,8,9,10,1,2,3,4,5,6,7,8,9,10,1,2};

intmul3[N*N];

matrix_mul(mul1,mul2,mul3,N);

N*N;

%5d"

mul3[i]);

if((i+1)%N==O)printf("

}return0;

voidmatrix_add_sub(int*A,int*B,int*C,intm,charch)

m*m;

if(ch=='

+'

C[i]=A[i]+B[i];

else

C[i]=A[i]-B[i];

voidupdate_half_value(int*A,int*B,intm)

ivm/2;

m/2;

B[i*m+j]=A[i*m/2+j];

voidget_half_value(int*A,int*B,intm)

A[i*m/2+j]=B[i*m+j];

voidmatrix_mul(int*A,int*B,int*C,intm)

if(m==2)

intD,E,FGH,I,J;

D=A[0]*(B[1]-B[3]);

E=A[3]*(B[2]-B[0]);

F=(A[2]+A[3])*B[0];

G=(A[0]+A[1])*B[3];

H=(A[2]-A[0])*(B[0]+B[1]);

l=(A[1]-A[3])*(B[2]+B[3]);

J=(A[0]+A[3])*(B[0]+B[3]);

C[0]=E+I+J-G;

C[1]=D+G;

C[2]=E+F;

C[3]=D+H+J-F;

return;

intA1[m*m/4],A2[m*m/4],A3[m*m/4],A4[m*m/4];

intB1[m*m/4],B2[m*m/4],B3[m*m/4],B4[m*m/4];

intC1[m*m/4],C2[m*m/4],C3[m*m/4],C4[m*m/4];

intD[m*m/4],E[m*m/4],F[m*m/4],G[m*m/4],H[m*m/4],l[m*m/4],J[m*m/4];

inttemp1[m*m/4],temp2[m*m/4];

get_half_value(A1,&

A[0],m);

get_half_value(A2,&

A[m/2],m);

get_half_value(A3,&

A[m*m/2],m);

get_half_value(A4,&

A[m*m/2+m/2],m);

get_half_value(B1,&

B[0],m);

get_half_value(B2,&

B[m/2],m);

get_half_value(B3,&

B[m*m/2],m);

get_half_value(B4,&

B[m*m/2+m/2],m);

matrix_add_sub(B2,B4,temp1,m/2,'

-'

matrix_mul(A1,temp1,D,m/2);

matrix_add_sub(B3,B1,temp1,m/2,'

matrix_mul(A4,temp1,E,m/2);

matrix_add_sub(A3,A4,temp1,m/2,'

matrix_mul(temp1,B1,F,m/2);

matrix_add_sub(A1,A2,temp1,m/2,'

matrix_mul(temp1,B4,G,m/2);

matrix_add_sub(A3,A1,temp1,m/2,'

matrix_add_sub(B1,B2,temp2,m/2,'

matrix_mul(temp1,temp2,H,m/2);

matrix_add_sub(A2,A4,temp1,m/2,'

matrix_add_sub(B3,B4,temp2,m/2,'

matrix_mul(temp1,temp2,I,m/2);

matrix_add_sub(A1,A4,temp1,m/2,'

matrix_add_sub(B1,B4,temp2,m/2,'

matrix_mul(temp1,temp2,J,m/2);

matrix_add_sub(E,I,temp1,m/2,'

matrix_add_sub(J,G,temp2,m/2,'

matrix_add_sub(temp1,temp2,C1,m/2,'

matrix_add_sub(D,G,C2,m/2,'

matrix_add_sub(E,F,C3,m/2,'

matrix_add_sub(D,H,temp1,m/2,'

matrix_add_sub(J,F,temp2,m/2,'

matrix_add_sub(temp1,temp2,C4,m/2,'

update_half_value(C1,&

C[0],m);

update_half_value(C2,&

C[m/2],m);

update_half_value(C3,&

C[m*m/2],m);

update_half_value(C4,&

C[m*m/2+m/2],m);

13.

{inta[6][7]={

{16,4,3,12,6,0,3},

{4,-5,6,7,0,0,2},{6,0,-1,-2,3,6,8},

{5,3,4,0,0,27},{-1,7,4,0,7,-5,6},

{0,-1,3,4,12,4,2}};

intb[6][7],c[6][7];

inti,j,k;

intmax;

intflag;

inttemp;

6;

fora=0;

7;

j++){

b[i][j]=a[i][j];

c[i][j]=-1;

{max=0;

for(k=j-2;

k<

=j+2;

k++){

if(k<

0)continue;

elseif(k>

6)break;

else{

if(b[i][j]+b[i-1][k]>

{max=b[i][j]+b[i-1][k];

flag=k;

}b[i][j]=max;

c[i][j]=flag;

}for(j=1;

=5;

max=0;

kv=j+2;

k++)

{if(k<

elseif(k>

max){

max=b[i][j]+b[i-1][k];

flag=k;

c[i][j]=flag;

{if(b[i][j]>

max=b[i][j];

flag=j;

max);

temp=c[i][flag];

a[i][temp]);

for(j=i;

j>

0;

j--){

temp=c[j][temp];

printf("

a卜1][temp]);

}

14.

intA[6]={0,3,7,9,12,13};

intB[6]={0,5,10,11,11,11};

intC[6]={0,4,6,11,12,12};

intAB[6][6];

inttemp[6];

intabc[6];

=i;

AB[i][j]=A[i-j]+B[j];

if(AB[i][j]>

max)max=AB[i][j];

temp[i]=max;

abc[i]=temp[i]+C[5-i];

if(abc[i]>

max=abc[i];

flag=i;

max=%d\n"

c=%d\n"

5-flag);

max=max-C[5-flag];

=flag;

if(AB[flag][i]==max)

b=%d\n"

a=%d\n"

flag-i);

break;

16.

#defineN100intsearch(int*a,intleft,intright);

intsum_buf(int*a,intleft,intright);

inta[N];

ints;

for(i=O;

N;

a[i]=1;

a[24]=2;

s=search(a,0,N-1);

s);

intsum_buf(int*a,intleft,intright)

for(i=left;

=right;

i++)sum+=a[i];

returnsum;

intsearch(int*a,intleft,intright){

intmid=(left+right)/2;

if(left==right-1)

if(a[left]<

a[right])

returnright;

elsereturnleft;

if(mid*2!

=(right+left-1))

if(sum_buf(a,left,

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

当前位置:首页 > 幼儿教育 > 家庭教育

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

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