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

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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、

#includeint main(void){int n=2;int

i;for(i=1;i<=9;i++){n=(n+2)*2;}printf("%d\n",n);return 0;}3、#includeint 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、#includeint 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,&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、#includechar 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)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、

#includeint main(void){int

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、#includeint main(void){int

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、#includeint main(void){int i;int sum;int

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 #define N10 void max_min(int *a,int m,int n,int

*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)

相关文档
最新文档