算法设计与分析 吕国英 习题答案第四章

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

算法设计与分析(第二版)主编:吕国英

习题答案

第四章

1.

#include

int main(void)

{

int buf[100];

int n;

int i,j,k;

scanf("%d",&n);

for(i=0;i

buf[i]=2;

for(i=0;i

{

for(j=0;j

{

buf[j]+=2;

}

}

for(j=0;j

{

if(buf[j]>=10)

{

buf[j+1]+=buf[j]/10;

buf[j]=buf[j]%10;

}

}

for(i=n-1;i>=0;i--)

printf("%d",buf[i]);

printf("\n");

return 0;

}

2.

#include

int main(void)

{

int n=2;

int i;

for(i=1;i<=9;i++)

{

n=(n+2)*2;

}

printf("%d\n",n);

return 0;

}

3.

#include

int main(void)

{

int a=54;

int n;

int m;

printf("计算机先拿3张牌\n"); a=a-3;

while(a>=0)

{

printf("还剩%d张牌\n",a); printf("你拿几张?请输入:"); scanf("%d",&n);

if(n>4||n<1||n>a)

{

printf("错误!重新拿牌\n"); continue;

}

a=a-n;

printf("还剩%d张牌\n",a);

if(a==0)

break;

m=5-n;

printf("计算机拿%d\n",m);

a=a-m;

}

return 0;

}

4.

#include

int d;

int a1,a2;

int fun(int n);

int main(void)

{

int n;

printf("n=?,d=?,a1=?,a2=?");

scanf("%d%d%d%d\n",&n,&d,&a1,&a2); printf("%d\n",fun(n));

return 0;

}

int fun(int n)

{

if(n==1)

return a1;

if(n==2)

return a2;

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

}

5.

#include

char chess[8][8];

int is_safe(int row,int col);

int queen(int row,int col,int n); int main(void)

{

int i,j;

for(i=0;i<8;i++)

for(j=0;j<8;j++)

chess[i][j]='X';

queen(0,0,0);

for(i=0;i<8;i++)

{

for(j=0;j<8;j++)

printf("%c ",chess[i][j]);

printf("\n");

}

return 0;

}

int is_safe(int row,int col)

{

int i,j;

for(i=0;i<8;i++)

{

if(chess[row][i]=='Q')

return 0;

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

return 0;

}

i=row;

j=col;

while(i!=-1&&j!=-1)

{

if(chess[i--][j--]=='Q')

return 0;

}

i=row;

j=col;

while(i!=-1&&j!=8)

{

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

return 0;

}

i=row;

j=col;

while(i!=8&&j!=-1)

{

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

return 0;

}

i=row;

j=col;

while(i!=8&&j!=8)

{

if(chess[i++][j++]=='Q')

return 0;

}

return 1;

}

int queen(int row,int col,int n) {

int i,j;

int result=0;

if(n==8)

return 1;

else

if(is_safe(row,col))

{

chess[row][col]='Q';

for(i=0;i<8;i++)

for(j=0;j<8;j++)

{

相关文档
最新文档