叠筐
Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 9549 Accepted Submission(s): 2380
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@ @@@/* 注意细节:当n==1时,直接输出中心色。输出格式注意,最后一行没有空行 */ #include<iostream> using namespace std; int main() { int n,flag=0; char a,b; while(cin>>n>>a>>b){ if(flag) cout<<endl; if(n==1) { cout<<a<<endl; flag=1; continue; } char temp; if((n-1)/2%2!=0){ temp=a; a=b; b=temp; } char map[80][80]; int l=0,lx=0,ly=n-1,rx=0,ry=n-1,i,j; while(l<=n/2+1){ if(l%2==0){ for(i=lx;i<=ly;i++){ map[rx][i]=a; map[ry][i]=a; } for(i=rx;i<=ry;i++){ map[i][lx]=a; map[i][ly]=a; } lx++; ly--; rx++; ry--; } else { for(i=lx;i<=ly;i++){ map[rx][i]=b; map[ry][i]=b; } for(i=rx;i<=ry;i++){ map[i][lx]=b; map[i][ly]=b; } lx++; ly--; rx++; ry--; } l++; } map[0][0]=map[0][n-1]=map[n-1][0]=map[n-1][n-1]=' '; for(i=0;i<n;i++){ for(j=0;j<n;j++) cout<<map[i][j]; cout<<endl; } flag=1; } return 0; }