叠筐

Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)

Total Submission(s): 16088    Accepted Submission(s): 4201

 

 

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@

 @@@ 

 

 

Author

qianneng

 

 

Source

浙江工业大学网络选拔赛

 

 

 1 #include <iostream>
 2 #include <cstdio>
 3 using namespace std;
 4 char s[85][85];
 5 int main()
 6 {
 7     char a,b;
 8     int n;
 9     int f=0;
10     while(~scanf("%d %c %c",&n,&a,&b)){
11         if(f) cout<<endl;
12         if(n==1){//忘记考虑了
13             cout<<a<<endl;
14             continue;
15         }
16         int x=n/2+1;
17         s[x][x]=a;
18         for(int i=1;i<=n/2;i++){
19             for(int j=x-i;j<=x+i;j++){
20                 if(i%2) s[x-i][j]=s[x+i][j]=s[j][x-i]=s[j][x+i]=b;
21                 else s[x-i][j]=s[x+i][j]=s[j][x-i]=s[j][x+i]=a;
22             }
23         } 
24         s[1][n]=s[1][1]=s[n][1]=s[n][n]=' ';
25         for(int i=1;i<=n;i++){
26             for(int j=1;j<=n;j++){
27                 cout<<s[i][j];
28             }
29             cout<<endl;
30         }
31         f=1;
32     }
33     return 0;
34 }

 

posted on 2016-01-28 00:45  Sunny糖果  阅读(648)  评论(0编辑  收藏  举报