HDU-IMNU集训六:叠筐-纯模拟(注意技巧)

来源:互联网 发布:网络教育学籍注册条件 编辑:程序博客网 时间:2024/06/04 20:10

Problem Description

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

Input

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

Output

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

Sample Input

11 B A5 @ W

Sample Output

 AAAAAAAAA ABBBBBBBBBAABAAAAAAABAABABBBBBABAABABAAABABAABABABABABAABABAAABABAABABBBBBABAABAAAAAAABAABBBBBBBBBA AAAAAAAAA  @@@ @WWW@@W@W@@WWW@ @@@ 

#include<iostream>#include<iomanip>#include<stdio.h>#include<algorithm>#include<cmath>#include<cstring>//strstr()using namespace std;

int main (){    char a[80][80];    int n;    char Cen,Per;//centrality,periphery      int flag=0;//标记输出之间空行     while( cin>>n>>Cen>>Per )    {             if( flag ) cout<<endl;                   flag=1;                   if(n==1)   cout<<Cen<<endl;                                    else{                        for( int i=0; i<n; i++ ){//上三角                for( int j=i; j<n-i; j++ ){                    a[i][j]=a[j][i]=( (n/2)%2!=0 ?                     (i%2==0 ? Per : Cen) : (i%2==0 ? Cen : Per) );//除去中心点所在行四周的行数奇偶性                     }                                             //决定外围的花纹                }                         for( int i=n-1; i>=0; i-- ){//下三角                for( int j=i; j>=n-1-i; j-- ){                    a[i][j]=a[j][i]=( (n/2)%2!=0 ?                     (i%2==0 ? Per : Cen) : (i%2==0 ? Cen : Per) );                    }               }                         a[0][0]=a[0][n-1]=a[n-1][n-1]=a[n-1][0]=' ';                    for( int i=0; i<n; i++ ){              for( int j=0; j<n; j++ ){                   cout<<a[i][j];                   }                   cout<<endl;              }          }          }      system("pause");         return 0;}

 

 

0 0
原创粉丝点击