hdu 2074 叠框

来源:互联网 发布:linux u盘安装windows 编辑:程序博客网 时间:2024/04/29 08:48
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@

@@@

思路:这题有很多的做法,也可以直接暴力输出,我是根据规律来变得,开一个二维字符数组,当i>j时就要变一下,j>=n-1-i时也要变,我每次取每一行的前面的比后面的少一个,因为这样还可以经过循环变回来,比如第三行 前面的 A B 后面为 A B A 这好为一个循环,另外哪一个元素在外面 看 (n-1)%4==?  不等于0 则交换位置  等于则不变 ac代码:#include<stdio.h>int main(){   char map[100][100] ;    int n,i,j,flag=0;    char a,c,t,mark;    while(scanf("%d %c %c",&n,&a,&c)!=EOF)    {             if(flag)          printf("\n");        flag=1;     if((n-1)%4)          {   t=a;              a=c;              c=t;  }for(i=0;i<=n/2;i++)  {   t=a;      mark=1;       for(j=0;j<n;j++)       {    if((i==0&&n!=1&&(j==0||j==n-1)))               {  putchar(' ');                 map[i][j]=' ';                 continue;   }   map[i][j]=t;   putchar(t);   if(i>j||j>=n-1-i)   {   if(mark)       {  t=c;          mark=0;   }   else   {  t=a;      mark=1;   }   }   }   putchar('\n');  }  for(i=n/2-1;i>=0;i--)  {     for(j=0;j<n;j++)          printf("%c",map[i][j]);        putchar('\n');  }}}hdu 2074

1 0
原创粉丝点击