习题答案第四章 算法设计与分析 吕国英
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
习题答案第四章算法设计与分析吕国英
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 i;for(i=1;i<=9;i++){n=(n+2)*2;}printf("%d\n",n);return 0;}3、#include ");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 fun(int n);int main(void){int n;printf("n=?,d=?,a1=?,a2=?");scanf("%d%d%d%d\n",&n,&d,&a 1,&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 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)re turn 0;}return1;}int queen(int row,int col,int n){int i,j;int result=0;if(n==8)return1;elseif(is_safe(row,col)){chess[r ow][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{che ss[row][col]=X;return 0;}}elsereturn 0;}6、 #include i,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);}}return 0;}7、#include i;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);}return 0;}8、#include a1,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);}}}}return 0;}9、#include *min1,int *min2,int *max1,int *max2); int main(void) { int a[N]={2,3,4,5,34,7,9,6,43,21}; int min1,min2; int max1,max2; max_min(a,0,N-1,&min1,&min2,&max1,&max2); printf("min1=%d\nmin2=%d\nmax1=%d\nmax2=%d\n",min1,min2,m ax1,max2); return 0; } void max_min(int *a,int m,int n,int *min1,int *min2,int *max1,int *max2) { int lmin1,lmin2,lmax1,lmax2; int rmin1,rmin2,rmax1,rmax2; int mid; if(m==n)