叠筐

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
linle   |   We have carefully selected several similar problems for you:   2072  2091  1096  1093  1092 
 
题目不能,但格式有点坑,不确定测试数据个数,又要求框与框之间空行隔开,所以只能在输出图形之前就输出图像。
 
#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("\n");
            }
            flag=1;
            if(n==1){
                printf("%c\n",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("\n");

        }



    }
    return 0;
}