题目描述:
把一个个大小差一圈的筐叠上去,使得从上往下看时,边筐花色交错。这个工作现在要让计算机来完成,得看你的了。
输入格式:
输入是一个个的三元组,分别是,外筐尺寸n(n为满足0<n<80的奇整数),中心花色字符,外筐花色字符,后二者都为ASCII可见字符;
输出格式:
输出叠在一起的筐图案,中心花色与外筐花色字符从内层起交错相叠,多筐相叠时,最外筐的角总是被打磨掉。叠筐与叠筐之间应有一行间隔。
样例输入:
5 ^ !
7 ! @
0
样例输出:
^^^
^!!!^
^!^!^
^!!!^
^^^
@@@@@
@!!!!!@
@!@@@!@
@!@!@!@
@!@@@!@
@!!!!!@
@@@@@
时间限制: 1000ms
空间限制: 32MB
代码如下:
#include<bits/stdc++.h>
using namespace std;
int main(){
int t,flag1=0;
char x,y,a[101][101]={};
while(1){
cin>>t;
if(t==0) break;
cin>>x>>y;
if(flag1){
flag1++;
cout<<endl;
}
int flag=1,m,n;
m=(t+1)/2;n=(t+1)/2;
int k;
while(m){
if(flag==1) k=x;
else k=y;
for(int i=m;i<=n;i++){
a[m][i]=k;
a[n][i]=k;
a[i][n]=k;
a[i][m]=k;
}
m--;
n++;
flag*=-1;
}
if(t!=1) a[1][1]=a[1][t]=a[t][1]=a[t][t]=' ';
for(int i=1;i<=t;i++){
for(int j=1;j<=t;j++) cout<<a[i][j];
cout<<endl;
}cout<<endl;
}
return 0;
}