hdoj 2074 叠筐

叠筐

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


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

 

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

 

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

 

Sample Input
11 B A
5 @ W
 

 

Sample Output
  AAAAAAAAA
ABBBBBBBBBA
ABAAAAAAABA
ABABBBBBABA
ABABAAABABA
ABABABABABA
ABABAAABABA
ABABBBBBABA
ABAAAAAAABA
ABBBBBBBBBA
  AAAAAAAAA
 
 
    @@@
@WWW@
@W@W@
@WWW@
   @@@
1、注意考虑n==1的情况
2、注意每两组输出之间有一个空白行
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
#include<stdio.h>
#include<string.h>
#define MAX 110
char s[MAX][MAX];
int main()
{
    int n,m,j,i,t;
    char a,b,c;
    int ok=0;
    while(scanf("%d %c %c",&n,&a,&b)!=EOF)
    {
        if(ok)
        printf("\n");
        ok=1;
        if(n==1)
        {
            printf("%c\n",a);
            continue;
        }
        memset(s,'\0',sizeof(s));
        m=(n+1)/2-1;
        s[m][m]=a;
        for(i=1;i<=m;i++)
        {
            if(i&1) c=b;
            else c=a;
            for(j=m-i;j<=m+i;j++)
            {
                s[m-i][j]=c;
                s[m+i][j]=c;
                s[j][m-i]=c;
                s[j][m+i]=c;
            }
        }
        s[0][0]=' ';
        s[0][n-1]=' ';
        s[n-1][0]=' ';
        s[n-1][n-1]=' ';
        for(i=0;i<n;i++)
        {
            puts(s[i]);
        }
    }
    return 0;
}

  

 
 
 
 
posted @   非我非非我  阅读(404)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示