需要的时候,就把一个个大小差一圈的筐叠上去,使得从上往下看时,边筐花色交错。这个工作现在要让计算机来完成,得看你的了。
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 <cstdio>
#include <algorithm>
#include <cstring>
using namespace std;
const int MAXN=100;
char m[MAXN][MAXN];
int main(void){
int n;
char a,b;
int q=0;
while(~scanf("%d %c %c",&n,&a,&b)){
getchar();
if(q!=0){
printf("\n");
}
q++;
if(n==1){
printf("%c\n",a);
continue;
}
memset(m,b,sizeof(m));
char now=(n-1)%4==0 ? a : b;
for(int i=1;i<=n/2+1;i++){
for(int j=i;j<=n+1-i;j++){
m[i][j]=now;
}
for(int j=i+1;j<=n/2+1;j++){
for(int k=1;k<=n;k++){
m[j][k]=m[i][k];
}
}
now=(now==a? b : a);
}
for(int i=n;i>n/2;i--){
for(int j=1;j<=n;j++){
m[i][j]=m[n+1-i][j];
}
}
m[1][1]=m[1][n]=m[n][1]=m[n][n]=' ';
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
printf("%c",m[i][j]);
}
printf("\n");
}
}
return 0;
}