题目1432:叠筐
题目1432:叠筐
时间限制:1 秒
内存限制:128 兆
特殊判题:否
提交:6048
解决:1412
- 题目描述:
-
把一个个大小差一圈的筐叠上去,使得从上往下看时,边筐花色交错。这个工作现在要让计算机来完成,得看你的了。
- 输入:
-
输入是一个个的三元组,分别是,外筐尺寸n(n为满足0<n<80的奇整数),中心花色字符,外筐花色字符,后二者都为ASCII可见字符;
- 输出:
-
输出叠在一起的筐图案,中心花色与外筐花色字符从内层起交错相叠,多筐相叠时,最外筐的角总是被打磨掉。叠筐与叠筐之间应有一行间隔。
- 样例输入:
-
11 B A 5 @ W
- 样例输出:
-
AAAAAAAAA ABBBBBBBBBA ABAAAAAAABA ABABBBBBABA ABABAAABABA ABABABABABA ABABAAABABA ABABBBBBABA ABAAAAAAABA ABBBBBBBBBA AAAAAAAAA @@@ @WWW@ @W@W@ @WWW@ @@@
#include <iostream> #include<stdio.h> using namespace std; int main() { int outputbuf[82][82]; char a,b; int n; bool firstcase=true; while(scanf("%d %c %c",&n,&a,&b)==3) { if(firstcase==true) { firstcase=false; } else { printf("\n"); } for(int i=1,j=1; i<=n; i+=2,j++) { int x=n/2+1,y=x; x-=j-1; y-=j-1; char c=j%2==1?a:b; for(int k=1; k<=i; k++)//K代表圈的长度 { outputbuf[x+k-1][y]=c;//左边赋值 outputbuf[x][y+k-1]=c;//上边赋值 outputbuf[x+i-1][y+k-1]=c;//右边赋值 outputbuf[x+k-1][y+i-1]=c;//下边赋值 } } if(n!=1) { outputbuf[1][1]=' '; outputbuf[n][1]=' '; outputbuf[1][n]=' '; outputbuf[n][n]=' '; } for(int i=1; i<=n; i++) { for(int j=1; j<=n; j++) { printf("%c",outputbuf[i][j]); } printf("\n"); } } return 0; }