叠筐
题目描述
需要的时候,就把一个个大小差一圈的筐叠上去,使得从上往下看时,边筐花色交错。这个工作现在要让计算机来完成,得看你的了。
Iutput
输入是一个个的三元组,分别是,外筐尺寸n(n为满足0
Output
输出叠在一起的筐图案,中心花色与外筐花色字符从内层起交错相叠,多筐相叠时,最外筐的角总是被打磨掉。叠筐与叠筐之间应有一行间隔。
Sample Input
11 B A
5 @ W
Sample Output
思路:
模拟题,从中间位置开始往外围填充字符,注意当边长为1 的时候,就没有“圆角”了。
代码
#include <cstdio>
using namespace std;
int main()
{
char grid[81][81];
int t,flag1=0;
char a,b;
while(scanf("%d %c %c",&t,&a,&b)!=EOF)
{
if(flag1)
printf("\n");
int m,n,i,j,flag=1;
char key;
m=(t+1)/2;
n=(t+1)/2;
while(m)
{
if(flag==1)
key=a;
else key=b;
for(i=m; i<=n; i++)
{
grid[m][i]=key;
grid[n][i]=key;
grid[i][n]=key;
grid[i][m]=key;
}
m-=1;
n+=1;
flag*=-1;
}
if(t!=1)
grid[1][1]=grid[1][t]=grid[t][1]=grid[t][t]=' ';//注意t=1的情况,别让空格覆盖
for(i=1; i<=t; i++)
{
for(j=1; j<=t; j++)
{
printf("%c",grid[i][j]);
}
printf("\n");
}
flag1++;
}
return 0;
}