叠筐
Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 12156 Accepted Submission(s): 3134
Problem Description
需要的时候,就把一个个大小差一圈的筐叠上去,使得从上往下看时,边筐花色交错。这个工作现在要让计算机来完成,得看你的了。
Input
输入是一个个的三元组,分别是,外筐尺寸n(n为满足0<n<80的奇整数),中心花色字符,外筐花色字符,后二者都为ASCII可见字符;
Output
输出叠在一起的筐图案,中心花色与外筐花色字符从内层起交错相叠,多筐相叠时,最外筐的角总是被打磨掉。叠筐与叠筐之间应有一行间隔。
Sample Input
11 B A 5 @ W
Sample Output
AAAAAAAAA ABBBBBBBBBA ABAAAAAAABA ABABBBBBABA ABABAAABABA ABABABABABA ABABAAABABA ABABBBBBABA ABAAAAAAABA ABBBBBBBBBA AAAAAAAAA @@@ @WWW@ @W@W@ @WWW@ @@@注意输出格式!如:![]()
#include<stdio.h> #include<string.h> int diekuang(int n,char a,char b){ char s[80][80]; int i,j,k; char str; memset(s,'\0',sizeof(s)); int x=(n+1)/2; for(i=0;i<=x;i++){ if(x&1){ if(i&1) str=b; else str=a; } else{ if(i&1) str=a; else str=b; } for(j=i,k=i;k<n-i;k++) s[j][k]=str; for(k--;j<n-i;j++) s[j][k]=str; for(j--;k>=i;k--) s[j][k]=str; for(k++;j>=i;j--) s[j][k]=str; } s[0][0]=s[0][n-1]=s[n-1][0]=s[n-1][n-1]=' '; for(i=0;i<n;i++) puts(s[i]); } int main() { int n,l=0; char a,b; while(scanf("%d %c %c",&n,&a,&b)!=EOF){ if(l) printf("\n"); if(n==1) printf("%c\n",a); else diekuang(n,a,b); l++; } return 0; }