E - 叠筐

来源:互联网 发布:acg和sia知乎 编辑:程序博客网 时间:2024/06/05 18:55
E - 叠筐
Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u
Submit Status

Description

需要的时候,就把一个个大小差一圈的筐叠上去,使得从上往下看时,边筐花色交错。这个工作现在要让计算机来完成,得看你的了。

Input

输入是一个个的三元组,分别是,外筐尺寸n(n为满足0<n<80的奇整数),中心花色字符,外筐花色字符,后二者都为ASCII可见字符;

Output

输出叠在一起的筐图案,中心花色与外筐花色字符从内层起交错相叠,多筐相叠时,最外筐的角总是被打磨掉。叠筐与叠筐之间应有一行间隔。

Sample Input

11 B A5 @ W

Sample Output

 AAAAAAAAA ABBBBBBBBBAABAAAAAAABAABABBBBBABAABABAAABABAABABABABABAABABAAABABAABABBBBBABAABAAAAAAABAABBBBBBBBBA AAAAAAAAA  @@@ @WWW@@W@W@@WWW@ @@@ 
注意的地方:
1.每两个输出的图形之间要有一行空格
2.注意当n=1时的情形
3.每个角上有一个空格
#include <iostream>#include <cstdio>#define  MAX 100005using namespace std;int main(){char flow[81][81];char fin,fout,temp;int n,mid,q=0;while(~scanf("%d",&n)){getchar();scanf("%c",&fin);getchar();scanf("%c",&fout);getchar();if(q)cout<<endl;//解决每两个相邻的输出数据之间有一个空行,学到了^-^if(n==1){cout<<fin<<endl;continue;}mid=(n+1)/2;flow[mid][mid]=fin;for(int i=1;i<=(n-1)/2;i++){if(i%2==0)temp=fin;elsetemp=fout;for(int j=mid-i,k=mid-i;k<=mid+i;k++)//j行,k列,上 {flow[j][k]=temp;}for(int j=mid-i,k=mid-i;j<=mid+i;j++)//左 flow[j][k]=temp;for(int j=mid+i,k=mid-i;k<=mid+i;k++)//下 flow[j][k]=temp;for(int j=mid-i,k=mid+i;j<=mid+i;j++)//右 flow[j][k]=temp; }flow[1][1]=' ';flow[1][n]=' '; flow[n][1]=' ';  flow[n][n]=' ';for(int i=1;i<=n;i++){for(int j=1;j<=n;j++)cout<<flow[i][j];cout<<endl;}q=1;}return 0;}
0 0
原创粉丝点击