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;
}