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
using namespace std;
int main()
{
int n;
char a, s, t;
char st[100][100];
while(~scanf("%d %c %c",&n,&a,&s))
{
if(n == 1)
printf("%c\n",a);
else
{
int l = 0,k,w = n - 1;
if((n-1) % 4 == 0)
{
t = s;
s = a;
a = t;
}
for(int i = 0,j = n - 1; i <= j; i++,j--)
{
for(k = i; k <= j; k++)
{
if(l % 2 == 0)
st[i][k] = st[j][k] = st[k][i] = st[k][j] = s;
else
st[i][k] = st[j][k] = st[k][i] = st[k][j] = a;
}
l++;
}
st[0][w] = st[w][0] = st[0][0] = st[w][w] = ' ';
for(int i = 0; i < n; i++)
{
for(int j = 0; j < n ; j++)
printf("%c",st[i][j]);
printf("\n");
}
}
printf("\n");
}
return 0;
}