ACM整理(二)——1432叠筐

来源:互联网 发布:java 巨杉数据库 编辑:程序博客网 时间:2024/05/18 01:41


思想:

无论需要显示几行,都将所有83*83的方阵填满,根据需要从里边取出对应的方阵

而方阵是上下对称且左右对称的,因此,我们只需要写出左上四分之一的内容,其余对称复制过去就可以

此题的输入与输出格式容易出现问题,需要特别注意


#include<stdio.h>int main(){int n,count1,count2;char B,A,final[83][83]; bool exchange=false;while(scanf("%d %c %c",&n,&B,&A)!=EOF){if(exchange){printf("\n");}elseexchange=true;//左上四分之一for (int i=0;i<42;i++){for (int j=0;j<42;j+=2){final[i][j]=A;final[i][j+1]=B;}}for (int i=0;i<42;i++){for (int j=0;j<42;j++){if (j>i){if (i%2==0){final[i][j]=A;} else{final[i][j]=B;}} }}//右上四分之一for (int i=0;i<42;i++){for (int j=0;j<41;j++){final[i][82-j]=final[i][j];}}//下边for (int i=0;i<41;i++){for (int j=0;j<82;j++){final[82-i][j]=final[i][j];}}//打印final[41-n/2][41-n/2]=' ';final[41-n/2][41+n/2]=' ';final[41+n/2][41-n/2]=' ';final[41+n/2][41+n/2]=' ';if (n==1){printf("%c",B);    printf("\n");} else{for (int i=41-n/2;i<=41+n/2;i++){for (int j=41-n/2;j<=41+n/2;j++){printf("%c",final[i][j]);}printf("\n");}}}return 0;}


1 0
原创粉丝点击