HDU 2074 叠筐

来源:互联网 发布:淘宝怎么买弹簧刀 编辑:程序博客网 时间:2024/06/16 03:43
>须要的时候,就把一个个大小差一圈的筐叠上去,使得从上往下看时,边筐花色交错。这个工作如今要让计算机来完毕,得看你的了。输入是一个个的三元组,各自是,外筐尺寸n(n为满足0<n<80的奇整数),中心花色字符,外筐花色字符,后二者都为ASCII可见字符;输出叠在一起的筐图案,中心花色与外筐花色字符从内层起交错相叠,多筐相叠时,最外筐的角总是被打磨掉。叠筐与叠筐之间应有一行间隔。
Sample Output
AAAAAAAAA ABBBBBBBBBAABAAAAAAABAABABBBBBABAABABAAABABAABABABABABAABABAAABABAABABBBBBABAABAAAAAAABAABBBBBBBBBA AAAAAAAAA @@@ @WWW@@W@W@@WWW@ @@@

#include <stdio.h>#include <stdlib.h>int array[81][81];//数组存图void deal(int n,char inside,char out){    if(n==1){        printf("%c\n",inside);        return;    }    char a[2];    a[0]=inside;    a[1]=out;    char now=a[n/2%2];//初始值为最外圈的字符    for(int i=1;i<=n/2;i++){//由外到内填图        int j;        for(j=i;j<=n-i+1;j++)//四个for循环,填一圈,可以简化            array[i][j]=now;        for(j=i;j<=n-i+1;j++)            array[n-i+1][j]=now;        for(j=i;j<=n-i+1;j++)            array[j][i]=now;        for(j=i;j<=n-i+1;j++)            array[j][n-i+1]=now;        if(now==inside)            now=out;        else            now=inside;    }    array[n/2+1][n/2+1]=inside;//正中间字符    array[1][1]=' ';//去角    array[n][1]=' ';    array[1][n]=' ';    array[n][n]=' ';    for(int i=1;i<=n;i++){        for(int j=1;j<=n;j++)            printf("%c",array[i][j]);        printf("\n");    }    return;}int main(){    int n;    char inside,out;    int flag=0;    while(scanf("%d %c %c",&n,&inside,&out)!=EOF){        if(flag==1)            printf("\n");        else            flag=1;        deal(n,inside,out);    }    return 0;}

1 0