HDU 2074 叠筐
http://acm.hdu.edu.cn/showproblem.php?pid=2074
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 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 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 | #include <bits/stdc++.h> using namespace std; const int maxn = 1e5+10; char zzt[maxn],wbd[maxn]; char pig[100][100]; int n; int cnt=0; void A( int x) //第 x 圈,最外第一圈 { //左上角是 a[x][x],右下角是 a[n-x+1][n-x+1] char cmz; if (x%2==0) cmz=zzt[0]; else cmz=wbd[0]; for ( int i=x; i<=n-x+1; i++) pig[x][i]=cmz; for ( int i=x; i<=n-x+1; i++) pig[n-x+1][i]=cmz; for ( int i=x; i<=n-x+1; i++) pig[i][x]=cmz; for ( int i=x; i<=n-x+1; i++) pig[i][n-x+1]=cmz; } int main() { while (~ scanf ( "%d" ,&n)) { cnt++; if (cnt!=1) printf ( "\n" ); scanf ( "%s%s" ,zzt,wbd); if (n==1) { printf ( "%c\n" ,zzt[0]); continue ; } if (((n+1)/2)%2==1) swap(zzt[0],wbd[0]); for ( int i=1; i<=(n+1)/2; i++) { A(i); } pig[1][1]= ' ' ; pig[1][n]= ' ' ; pig[n][1]= ' ' ; pig[n][n]= ' ' ; for ( int i=1; i<=n; i++) { for ( int j=1; j<=n; j++) { printf ( "%c" ,pig[i][j]); } printf ( "\n" ); } } return 0; } |
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步