叠筐
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
Sample Output
Author
qianneng
Source
Recommend
题目不能,但格式有点坑,不确定测试数据个数,又要求框与框之间空行隔开,所以只能在输出图形之前就输出图像。
#include <iostream> #include <cstdio> #include <cstring> using namespace std; int main() { int n; char c1,c2; char a[100][100]; int flag=0; while(~scanf("%d %c %c",&n,&c1,&c2)){ if(flag==1){ printf(" "); } flag=1; if(n==1){ printf("%c ",c1); continue; } for(int i=0;i<=n/2;i++){ char t; if((n/2)%2==0){ if(i%2==0){ t=c1; }else{ t=c2; } }else{ if(i%2==0){ t=c2; }else{ t=c1; } } for(int j=i;j<n-i;j++){ a[i][j]=t; a[n-i-1][j]=t; } for(int j=i;j<n-i;j++){ a[j][i]=t; a[j][n-i-1]=t; } } for(int i=0;i<n;i++){ for(int j=0;j<n;j++){ if(i==0&&j==0||i==0&&j==n-1||i==n-1&&j==0||i==n-1&&j==n-1){ printf(" "); }else{ printf("%c",a[i][j]); } } printf(" "); } } return 0; }