HDU-2074 疊筐(代碼超簡單)

 

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@ 
 @@@
#include<bits/stdc++.h>
using namespace std;
int main()
{
    int n,i,j;
    char a,b;
    int ans=0;
    while(~scanf("%d %c %c",&n,&a,&b)){
        if(ans++){//格式控制,題目要求兩個疊筐之間要空行
            cout<<endl;
        }
        if(n==1){//題目中n的取值範圍爲[0,80]中的任意奇數,剛開始沒考慮1,瘋狂wa
            cout<<a<<endl;
            continue;
        }
        char ch[80][80];
        int l=n/2;
        ch[l][l]=a;//中心的筐的圖案
        int flag=1;
        for(i=1;i<=l;++i){//從中間往四周‘畫’筐
            int s,e;
            s=l-i;
            e=l+i;
            for(j=s;j<=e;++j){//‘畫’一圈的筐
                if(flag){
                    ch[l+i][j]=ch[l-i][j]=ch[j][l+i]=ch[j][l-i]=b;
                }else{
                    ch[l+i][j]=ch[l-i][j]=ch[j][l+i]=ch[j][l-i]=a;
                }
            }
            flag=flag^1;//用來控制筐的圖案,不清楚的話可以自己打印一下flag
        }
        for(i=0;i<n;++i){
            for(j=0;j<n;++j){
                if((i==0||i==n-1)&&(j==0||j==n-1)){//四角被打磨掉
                    cout<<" ";
                }else{
                    cout<<ch[i][j];
                }
            }
            cout<<endl;
        }
    }
    return 0;
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章