HDU 2074叠筐

叠筐
Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
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@
 @@@ 
 
思考:从第i==j到j<(n-1)-i是两个字符之间相互转换的
 1 #include<iostream>
 2 using namespace std;
 3 
 4 char map[85][85];
 5 
 6 int main()
 7 {
 8     int n,i,j,mark;
 9     char a,b,t=0;
10     while(scanf("%d %c %c",&n,&a,&b)!=EOF)
11     {
12         if(t) putchar('\n');
13         if((n-1)%4)
14         {
15             t=a;
16             a=b;
17             b=t;
18         }
19         t=a,mark=1;
20         for(i=0;i<=n/2;i++)
21         {
22             t=a;
23             mark=1;
24             for(j=0;j<n;j++)
25             {
26                 if(n!=1&&i==0&&(j==0||j==n-1))//注意n==1的时候
27                 {
28                     putchar(' ');
29                     map[i][j]=' ';
30                     continue;
31                 }
32                 map[i][j]=t;
33                 putchar(t);
34                 if(i>j||j>=(n-1)-i)//字符变换的范围
35                 {
36                     if(mark)
37                     {
38                         t=b;
39                         mark=0;
40                     }
41                     else 
42                     {
43                         t=a;
44                         mark=1;
45                     }
46                 }
47             }
48             putchar('\n');
49         }
50         for(i=n/2-1;i>=0;i--)
51         {
52             for(j=0;j<n;j++)
53             {
54                 printf("%c",map[i][j]);
55             } 
56             putchar('\n');
57         }
58     }
59     return 0;
60 } 1 #include<iostream>
 2 using namespace std;
 3 char map[85][85];
 4 int main()
 5 {
 6     int n,i,j,mark;
 7     char a,b,t=0;
 8     while(scanf("%d %c %c",&n,&a,&b)!=EOF)
 9     {
10         if(t) putchar('\n');
11         if((n-1)%4)
12         {
13             t=a;
14             a=b;
15             b=t;
16         }
17         t=a,mark=1;
18         for(i=0;i<=n/2;i++)
19         {
20             t=a;
21             mark=1;
22             for(j=0;j<n;j++)
23             {
24                 if(n!=1&&i==0&&(j==0||j==n-1))//注意n==1的时候
25                 {
26                     putchar(' ');
27                     map[i][j]=' ';
28                     continue;
29                 }
30                 map[i][j]=t;
31                 putchar(t);
32                 if(i>j||j>=(n-1)-i)
33                 {
34                     if(mark)
35                     {
36                         t=b;
37                         mark=0;
38                     }
39                     else 
40                     {
41                         t=a;
42                         mark=1;
43                     }
44                 }
45             }
46             putchar('\n');
47         }
48         for(i=n/2-1;i>=0;i--)
49         {
50             for(j=0;j<n;j++)
51             {
52                 printf("%c",map[i][j]);
53             } 
54             putchar('\n');
55         }
56     }
57     return 0;
58 }

posted on 2012-03-17 14:33 煙雨默嘫 阅读(145) 评论(0)  编辑 收藏 引用


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


<2024年11月>
272829303112
3456789
10111213141516
17181920212223
24252627282930
1234567

导航

统计

公告

  • 默默的大神
  • 常用链接

    留言簿

    随笔分类

    随笔档案

    文章档案

    相册

    最新随笔

    搜索

    积分与排名

    最新评论

    阅读排行榜

    评论排行榜