习题答案第四章算法设计与分析吕国英.docx
- 文档编号:5275218
- 上传时间:2022-12-14
- 格式:DOCX
- 页数:21
- 大小:18.77KB
习题答案第四章算法设计与分析吕国英.docx
《习题答案第四章算法设计与分析吕国英.docx》由会员分享,可在线阅读,更多相关《习题答案第四章算法设计与分析吕国英.docx(21页珍藏版)》请在冰豆网上搜索。
习题答案第四章算法设计与分析吕国英
习题答案第四章-算法设计与分析-吕国英
Lt
D
算法设计与分析〔第二版〕
主编:
吕国英
习题答案
第四章
1.
#include
intmain(void)
{
intbuf[100];
intn;
inti,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"); return0; } 2. #include intmain(void) { intn=2; inti; for(i=1;i<=9;i++) { n=(n+2)*2; } printf("%d\n",n); return0; } 3. #include intmain(void) { inta=54; intn; intm; 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; } return0; } 4. #include intd; inta1,a2; intfun(intn); intmain(void) { intn; printf("n=? d=? a1=? a2=? "); scanf("%d%d%d%d\n",&n,&d,&a1,&a2); printf("%d\n",fun(n)); return0; } intfun(intn) { if(n==1) returna1; if(n==2) returna2; returnfun(n-2)-(fun(n-1)-d)*2; } 5. #include charchess[8][8]; intis_safe(introw,intcol); intqueen(introw,intcol,intn); intmain(void) { inti,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"); } return0; } intis_safe(introw,intcol) { inti,j; for(i=0;i<8;i++) { if(chess[row][i]=='Q') return0; if(chess[i][col]=='Q') return0; } i=row; j=col; while(i! =-1&&j! =-1) { if(chess[i--][j--]=='Q') return0; } i=row; j=col; while(i! =-1&&j! =8) { if(chess[i--][j++]=='Q') return0; } i=row; j=col; while(i! =8&&j! =-1) { if(chess[i++][j--]=='Q') return0; } i=row; j=col; while(i! =8&&j! =8) { if(chess[i++][j++]=='Q') return0; } return1; } intqueen(introw,intcol,intn) { inti,j; intresult=0; if(n==8) return1; else if(is_safe(row,col)) { chess[row][col]='Q'; for(i=0;i<8;i++) for(j=0;j<8;j++) { result+=queen(i,j,n+1); if(result>0) break; } if(result>0) return1; else { chess[row][col]='X'; return0; } } else return0; } 6. #include intmain(void) { inti,j,k; for(i=1;i<=33;i++) for(j=1;j<=50;j++) { k=100-i-j; if(k%2==0) { if(3*i+2*j+k/2==100) printf("大马%d\n中马%d\n小马%d\n\n\n",i,j,k); } } return0; } 7. #include intmain(void) { inti; for(i=1;i<=10000;i++) { if(i%2==1&&i%3==2&&i%5==4&&i%6==5&&i%7==0) printf("%d\n",i); } return0; } 8. #include intmain(void) { inti; intsum; inta1,a2,a3,a4; for(i=1000;i<=9999;i++) { a1=i%10; a2=i/10%10; if(a1! =a2) { a3=i/100%10; if(a1! =a3&&a2! =a3) { a4=i/1000; if(a1! =a4&&a2! =a4&&a3! =a4) { sum=(a1+a2+a3+a4)*(a1+a2+a3+a4); if(i%sum==0) printf("%d\n",i); } } } } return0; } 9. #include #defineN10 voidmax_min(int*a,intm,intn,int*min1,int*min2,int*max1,int*max2); intmain(void) { 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); return0; } 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]; } else if(m==n-1) {
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 习题 答案 第四 算法 设计 分析 吕国英