叠筐

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;

}