http://ac.jobdu.com/problem.php?cid=1040&pid=14
- 题目描述:
-
把一个个大小差一圈的筐叠上去,使得从上往下看时,边筐花色交错。这个工作现在要让计算机来完成,得看你的了。
- 输入:
-
输入是一个个的三元组,分别是,外筐尺寸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@ @@@
// 题目15:叠筐.cpp: 主项目文件。 #include "stdafx.h" #include <cstdio> #include <cstring> const int N=81; bool tag[N][N]; int main() { freopen("F:\\test.txt","r",stdin); freopen("F:\\output.txt","w",stdout); int n; char in,out; bool flag=true; while(scanf("%d%*c%c%*c%c",&n,&in,&out)!=EOF) { if(flag) flag=false; else printf("\n"); if(n==1) { printf("%c\n",in); continue; } memset(tag,0,sizeof(tag)); int t=n; for(int i=1;i<=(n+1)/2;i+=2) { int row=i,column=i; for(int j=0;j<t;column++,j++) tag[row][column]=true; column--; for(int j=0;j<t;row++,j++) tag[row][column]=true; row--; for(int j=0;j<t;column--,j++) tag[row][column]=true; column++; for(int j=0;j<t;row--,j++) tag[row][column]=true; t-=4; } tag[1][1]=tag[1][n]=tag[n][1]=tag[n][n]=false; for(int i=1;i<=n;i++) { for(int j=1;j<=n;j++) { if(((n-1)/2)%2==0) tag[i][j]=!tag[i][j]; if(i==1&&j==1||i==n&&j==1 ||i==n&&j==n||i==1&&j==n) putchar(' '); else { if(tag[i][j]) putchar(out); else putchar(in); } } printf("\n"); } } return 0; }