叠筐(2074)

来源:互联网 发布:vs源码加密 编辑:程序博客网 时间:2024/05/01 14:30
需要的时候,就把一个个大小差一圈的筐叠上去,使得从上往下看时,边筐花色交错。这个工作现在要让计算机来完成,得看你的了。
 

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

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

Sample Input
11 B A5 @ W
 

Sample Output
AAAAAAAAA ABBBBBBBBBAABAAAAAAABAABABBBBBABAABABAAABABAABABABABABAABABAAABABAABABBBBBABAABAAAAAAABAABBBBBBBBBA AAAAAAAAA @@@ @WWW@@W@W@@WWW@

@@@

#include <stdio.h> #include <string.h>  #include <math.h>  #include <stdlib.h>  #include <ctype.h>  int main()  {  char s[80][80];int n,i,j,qi;char center,wide,yi,count=0;while(scanf("%d %c %c",&n,¢er,&wide)!=EOF){count++;if(count!=1)    //注意是之间有\n printf("\n");if(n==1){printf("%c\n",center);continue;}else{if((n/2)%2==0)yi=center;elseyi=wide;for(i=0;i<=n-1;i++){s[0][i]=yi;}for(i=1;i<=n/2;i++){qi=i;for(j=qi;j<=n-1-qi;j++){if(s[i-1][j]==center)s[i][j]=wide;elses[i][j]=center;}for(j=1;j<qi;j++)s[i][j]=s[i-1][j];for(j=n-qi;j<=n-1;j++)s[i][j]=s[i-1][j];}printf(" ");for(i=1;i<=n-2;i++)printf("%c",yi);printf(" \n");for(i=1;i<=n/2;i++){printf("%c",yi);for(j=1;j<n-1;j++)printf("%c",s[i][j]);printf("%c",yi);printf("\n");}for(i=n/2-1;i>=1;i--){printf("%c",yi);for(j=1;j<n-1;j++)printf("%c",s[i][j]);printf("%c",yi);printf("\n");}printf(" ");for(i=1;i<=n-2;i++)printf("%c",yi);printf(" \n");}}    return 0;  } 


0 0