2121:叠筐分数: 2.3
题目描述
把一个个大小差一圈的筐叠上去,使得从上往下看时,边筐花色交错。这个工作现在要让计算机来完成,得看你的了。
输入格式
输入是一个个的三元组,分别是,外筐尺寸n(n为满足0<n<80的奇整数),中心花色字符,外筐花色字符,后二者都为ASCII可见字符;
输出
输出叠在一起的筐图案,中心花色与外筐花色字符从内层起交错相叠,多筐相叠时,最外筐的角总是被打磨掉。叠筐与叠筐之间应有一行间隔。
样例输入
5 ^ !
7 ( )
0
样例输出
^^^
^!!!^
^!^!^
^!!!^
^^^
)))))
)((((()
)()))()
)()()()
)()))()
)((((()
)))))
提示[+]
*** 提示已隐藏,点击上方 [+] 可显示 ***
2121:叠筐 分数: 2.3
时间限制:1 秒内存限制:32 兆特殊判题: 否 提交:3解决: 1
题目描述
把一个个大小差一圈的筐叠上去,使得从上往下看时,边筐花色交错。这个工作现在要让计算机来完成,得看你的了。
输入格式
输入是一个个的三元组,分别是,外筐尺寸n(n为满足0<n<80的奇整数),中心花色字符,外筐花色字符,后二者都为ASCII可见字符;
输出
输出叠在一起的筐图案,中心花色与外筐花色字符从内层起交错相叠,多筐相叠时,最外筐的角总是被打磨掉。叠筐与叠筐之间应有一行间隔。
样例输入
5 ^ !
7 ( )
0
样例输出
^^^
^!!!^
^!^!^
^!!!^
^^^
)))))
)((((()
)()))()
)()()()
)()))()
)((((()
)))))
提示[+]
*** 提示已隐藏,点击上方 [+] 可显示 ***
#include<stdio.h>
int main()
{
char b,c;
int n,o=0;
while(scanf("%d%*c",&n)!=EOF)
{
o++;
if(n==0)break;
scanf("%c %c",&b,&c);
int i,j;
int z,f=-1,m,i1;
char c1,a[100][100];
z=n/2;
a[z][z]=b;
m=z+1;
i1=z-1;
if(n==1){if(o!=1)printf("\n");printf("%c\n",b);}
else if(n==3)
{a[0][0]=a[2][0]=a[0][2]=a[2][2]=' ';
a[0][1]=a[1][0]=a[1][2]=a[2][1]=c;
if(o!=1)printf("\n");
for(i=0;i<n;i++)
{for(j=0;j<n;j++)
printf("%c",a[i][j]);
printf("\n");
}
}
else {
while(m<n-1)
{
if(f==-1)c1=c;
else c1=b;
for(j=i1;j<=m;j++)
a[i1][j]=c1;
for(i=i1+1;i<=m;i++)
a[i][j-1]=c1;
for(j=m-1;j>=i1;j--)
a[i-1][j]=c1;
for(i=m-1;i>i1;i--)
a[i][j+1]=c1;
m++;
i1--;
f=-f;
}
if(c1==b)c1=c;
else if(c1==c)c1=b;
for(j=1;j<n-1;j++)
{
a[0][j]=c1;
a[n-1][j]=c1;
}
for(i=1;i<n-1;i++)
{
a[i][0]=c1;
a[i][n-1]=c1;
}
a[0][0]=a[0][n-1]=a[n-1][0]=a[n-1][n-1]=' ';
if(o!=1)printf("\n");
for(i=0;i<n;i++)
{for(j=0;j<n;j++)
printf("%c",a[i][j]);printf("\n");
}
}
}
}