hdoj 2074 叠筐
叠筐
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
@@@
@WWW@
@W@W@
@WWW@
@@@
1、注意考虑n==1的情况
2、注意每两组输出之间有一个空白行
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 | #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; } |
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步