需要的时候,就把一个个大小差一圈的筐叠上去,使得从上往下看时,边筐花色交错。这个工作现在要让计算机来完成,得看你的了。
Input
输入是一个个的三元组,分别是,外筐尺寸n(n为大于0小于80的奇整数),中心花色字符,外筐花色字符,后二者都为ASCII可见字符;
Output
输出叠在一起的筐图案,中心花色与外筐花色字符从内层起交错相叠,多筐相叠时,最外筐的角总是被打磨掉。叠筐与叠筐之间应有一行间隔。
Sample Input
11 B A
5 @ W
Sample Output
无奈,把输出复制上去之后发现图形的排列不对,所以只能用图片了。
思路:先把整个图都用空格填充,在通过找规律来输出图形。
#include<stdio.h>
#include<string.h>
char e[85][85];
char op1[2],op2[2];
int main()
{
int n,T=0;
while(~scanf("%d %s %s",&n,op1,op2))
{
if(T)puts("");
if(n==1)
{
printf("%c\n",op1[0]);
continue;
}
char x,a=op1[0],b=op2[0];
int tmp=1;
if(((n+1)/2)%2==1)
{
char c=a;
a=b;
b=c;
}
while(tmp<=(n+1)/2)
{
int m=n-tmp+1;
if (tmp%2==1)x=b;
else x=a;
for(int i=tmp; i<=m; i++)
{
e[tmp][i]=x;
e[m][i]=x;
e[i][tmp]=x;
e[i][m]=x;
}
tmp++;
}
e[1][1]=e[n][n]=e[1][n]=e[n][1]=' ';
for(int i=1; i<=n; i++)
{
for(int j=1; j<=n; j++)
printf("%c",e[i][j]);
puts("");
}
T++;
}
return 0;
}