叠筐
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>
int main()
{
char s[81][81],a,b;
int n,flag=0;
while(~scanf("%d %c %c",&n,&a,&b))
{
if(flag==1)
printf("\n");
else
flag=1;
int i,j;
char f[5];
f[0]=a;
f[1]=b;
char t=f[n/2%2];
for(i=1; i<=n/2; i++)
{
for(j=i; j<=n-i+1; j++)
s[i][j]=t;
for(j=i; j<=n-i+1; j++)
s[n-i+1][j]=t;
for(j=i; j<=n-i+1; j++)
s[j][i]=t;
for(j=i; j<=n-i+1; j++)
s[j][n-i+1]=t;
if(t==a)
t=b;
else
t=a;
}
s[n/2+1][n/2+1]=t;
s[1][1]=' ';
s[1][n]=' ';
s[n][1]=' ';
s[n][n]=' ';
if(n==1)
printf("%c\n",a);
else
{
for(i=1; i<=n; i++)
{
for(j=1; j<=n; j++)
printf("%c",s[i][j]);
printf("\n");
}
}
}
return 0;
}