叠筐

来源:互联网 发布:指针数组初始化 null 编辑:程序博客网 时间:2024/06/10 18:04
E - 叠筐
Crawling in process...Crawling failedTime Limit:1000MS    Memory Limit:32768KB     64bit IO Format:%I64d & %I64u
SubmitStatus

Description

Input

Output

Sample Input

Sample Output

Hint

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<stdio.h>#include<stdlib.h>int main(){char **b;char p,q;int n,i,num=0,k=0,j=0;char c,temp;int t=0;while(scanf("%d %c %c",&n,&p,&q) !=EOF){if(t)printf("\n");num=0;k=0;if((n-(n/2+1))%2)c=q;elsec=p;if(n==1){printf("%c\n",c);}else{b=(char **)malloc(n*sizeof(char*));for(i=0;i<n;i++)b[i]=(char *)malloc(n*sizeof(char));for(i=0;i<n;i++)for(j=0;j<n;j++)b[i][j]=0;i=0;j=0;int direction=0;   for(;num< n*n;)  {  if(k%4==0 && k!=0)  if(c==p)  c=q;  else  c=p;  }    direction%=4;    if(direction==0)    {      for(;j<n && b[i][j]==0 ;j++)      {            if((i==0 && j==0) || (i==n-1 && j==0) || (i==0 && j==n-1) || (i==n-1 && j==n-1))      b[i][j]=' ';      else        b[i][j]=c;        num++;      }      k++;      i++;      j--;      }    else if(direction==1)    {          for(;i<n && b[i][j]==0;i++)      {            if((i==0 && j==0) || (i==n-1 && j==0) || (i==0 && j==n-1) || (i==n-1 && j==n-1))      b[i][j]=' ';      else        b[i][j]=c;        num++;      }      k++;      i--;      j--;    }    else if(direction==2)    {          for(;j>=0 && b[i][j]==0;j--)      {            if((i==0 && j==0) || (i==n-1 && j==0) || (i==0 && j==n-1) || (i==n-1 && j==n-1))      b[i][j]=' ';      else        b[i][j]=c;        num++;      }      k++;      i--;      j++;    }    else if(direction==3)    {          for(;i>=0 && b[i][j]==0;i--)      {            if((i==0 && j==0) || (i==n-1 && j==0) || (i==0 && j==n-1) || (i==n-1 && j==n-1))      b[i][j]=' ';      else        b[i][j]=c;        num++;      }      k++;      i++;      j++;    }    direction++;  }  for(i=0;i<n;i++)  for(j=0;j<n;j++)  if(j==n-1)  printf("%c\n",b[i][j]);  else  printf("%c",b[i][j]);t=1;}}return 0;}

0 0
原创粉丝点击