叠筐
Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 14556 Accepted Submission(s):
3784
Problem Description
需要的时候,就把一个个大小差一圈的筐叠上去,使得从上往下看时,边筐花色交错。这个工作现在要让计算机来完成,得看你的了。
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
@@@
@[email protected]
@[email protected]@
@[email protected]
@@@
1、注意考虑n==1的情况
2、注意每两组输出之间有一个空白行
#include<stdio.h> #include<string.h> #define MAX 110 char s[MAX][MAX]; int main() { int n,m,j,i,t; char a,b,c; int ok=0; while(scanf("%d %c %c",&n,&a,&b)!=EOF) { if(ok) printf("\n"); ok=1; if(n==1) { printf("%c\n",a); continue; } memset(s,‘\0‘,sizeof(s)); m=(n+1)/2-1; s[m][m]=a; for(i=1;i<=m;i++) { if(i&1) c=b; else c=a; for(j=m-i;j<=m+i;j++) { s[m-i][j]=c; s[m+i][j]=c; s[j][m-i]=c; s[j][m+i]=c; } } s[0][0]=‘ ‘; s[0][n-1]=‘ ‘; s[n-1][0]=‘ ‘; s[n-1][n-1]=‘ ‘; for(i=0;i<n;i++) { puts(s[i]); } } return 0; }
时间: 2024-10-10 11:05:39