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<bits/stdc++.h>
using namespace std;
int main()
{
int n,i,j;
char a,b;
int ans=0;
while(~scanf("%d %c %c",&n,&a,&b)){
if(ans++){//格式控制,题目要求两个叠筐之间要空行
cout<<endl;
}
if(n==1){//题目中n的取值范围为[0,80]中的任意奇数,刚开始没考虑1,疯狂wa
cout<<a<<endl;
continue;
}
char ch[80][80];
int l=n/2;
ch[l][l]=a;//中心的筐的图案
int flag=1;
for(i=1;i<=l;++i){//从中间往四周‘画’筐
int s,e;
s=l-i;
e=l+i;
for(j=s;j<=e;++j){//‘画’一圈的筐
if(flag){
ch[l+i][j]=ch[l-i][j]=ch[j][l+i]=ch[j][l-i]=b;
}else{
ch[l+i][j]=ch[l-i][j]=ch[j][l+i]=ch[j][l-i]=a;
}
}
flag=flag^1;//用来控制筐的图案,不清楚的话可以自己打印一下flag
}
for(i=0;i<n;++i){
for(j=0;j<n;++j){
if((i==0||i==n-1)&&(j==0||j==n-1)){//四角被打磨掉
cout<<" ";
}else{
cout<<ch[i][j];
}
}
cout<<endl;
}
}
return 0;
}