叠筐

来源:互联网 发布:js array set 去重 编辑:程序博客网 时间:2024/05/17 00:12

叠筐

Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 20592    Accepted Submission(s): 5385


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@ @@@
 

/*分类:字符处理 来源: hdu 叠筐思路:很明显这里的n有两种情况,(n+1)/2%2为奇数时交换a,b,偶数不用交换。 */#include<stdio.h>#include<string.h>#include<iostream>using namespace std;int main(){char a,b,t;int n;char str[99][99];int r=0;while(cin>>n>>a>>b){if(r++)printf("\n");if(n==1){printf("%c\n",a);continue;}if((n+1)/2%2==1){t=a;a=b;b=t;}for(int i=0;i<n;i++)str[0][i]=b;for(int i=1;i<=n/2;i++){memcpy(str[i],str[i-1],sizeof(str[i-1]));for(int k=i;k<n-i;k++){if(i%2==1)str[i][k]=a;elsestr[i][k]=b;}}str[0][0]=str[0][n-1]=' ';for(int i=0;i<=n/2;i++){{for(int j=0;j<n;j++)printf("%c",str[i][j]);}printf("\n");}for(int i=n/2-1;i>=0;i--){{for(int j=0;j<n;j++)printf("%c",str[i][j]);}printf("\n");}}return 0;}


0 0