叠筐
Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 20470 Accepted Submission(s): 5348
Problem Description
需要的时候,就把一个个大小差一圈的筐叠上去,使得从上往下看时,边筐花色交错。这个工作现在要让计算机来完成,得看你的了。
Input
输入是一个个的三元组,分别是,外筐尺寸n(n为满足0<n<80的奇整数),中心花色字符,外筐花色字符,后二者都为ASCII可见字符;
Output
输出叠在一起的筐图案,中心花色与外筐花色字符从内层起交错相叠,多筐相叠时,最外筐的角总是被打磨掉。叠筐与叠筐之间应有一行间隔。
Sample Input
11 B A
5 @ W
5 @ W
Sample Output
Author
qianneng
Source
Recommend
题目不能,但格式有点坑,不确定测试数据个数,又要求框与框之间空行隔开,所以只能在输出图形之前就输出图像。
#include <iostream>
#include <cstdio>
#include <cstring> using namespace std; int main()
{
int n;
char c1,c2;
char a[][];
int flag=;
while(~scanf("%d %c %c",&n,&c1,&c2)){
if(flag==){
printf("\n");
}
flag=;
if(n==){
printf("%c\n",c1);
continue;
}
for(int i=;i<=n/;i++){
char t;
if((n/)%==){
if(i%==){
t=c1;
}else{
t=c2;
}
}else{
if(i%==){
t=c2;
}else{
t=c1;
}
}
for(int j=i;j<n-i;j++){
a[i][j]=t;
a[n-i-][j]=t;
}
for(int j=i;j<n-i;j++){
a[j][i]=t;
a[j][n-i-]=t;
}
}
for(int i=;i<n;i++){
for(int j=;j<n;j++){
if(i==&&j==||i==&&j==n-||i==n-&&j==||i==n-&&j==n-){
printf(" ");
}else{
printf("%c",a[i][j]);
}
}
printf("\n"); } }
return ;
}