您的位置:首页 > 其它

HDU 2074 叠筐

2016-01-28 00:45 211 查看
叠筐

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

浙江工业大学网络选拔赛

#include <iostream>
#include <cstdio>
using namespace std;
char s[85][85];
int main()
{
char a,b;
int n;
int f=0;
while(~scanf("%d %c %c",&n,&a,&b)){
if(f) cout<<endl;
if(n==1){//忘记考虑了
cout<<a<<endl;
continue;
}
int x=n/2+1;
s[x][x]=a;
for(int i=1;i<=n/2;i++){
for(int j=x-i;j<=x+i;j++){
if(i%2) s[x-i][j]=s[x+i][j]=s[j][x-i]=s[j][x+i]=b;
else s[x-i][j]=s[x+i][j]=s[j][x-i]=s[j][x+i]=a;
}
}
s[1]
=s[1][1]=s
[1]=s

=' ';
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
cout<<s[i][j];
}
cout<<endl;
}
f=1;
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: