九度oj 1432 叠筐

来源:互联网 发布:mysql约束关系包括北京 编辑:程序博客网 时间:2024/06/03 20:33
题目1432:叠筐    时间限制:    1 秒    内存限制:    128 兆    特殊判题:    否    提交:    8118    解决:    1988    题目描述:        把一个个大小差一圈的筐叠上去,使得从上往下看时,边筐花色交错。这个工作现在要让计算机来完成,得看你的了。    输入:        输入是一个个的三元组,分别是,外筐尺寸n(n为满足0<n<80的奇整数),中心花色字符,外筐花色字符,后二者都为ASCII可见字符;    输出:        输出叠在一起的筐图案,中心花色与外筐花色字符从内层起交错相叠,多筐相叠时,最外筐的角总是被打磨掉。叠筐与叠筐之间应有一行间隔。    样例输入:        11 B A         5 @ W    样例输出:         AAAAAAAAA        ABBBBBBBBBA        ABAAAAAAABA        ABABBBBBABA        ABABAAABABA        ABABABABABA        ABABAAABABA        ABABBBBBABA        ABAAAAAAABA        ABBBBBBBBBA         AAAAAAAAA         @@@        @WWW@        @W@W@        @WWW@         @@@#include<iostream>using namespace std;#include<stdio.h>int main(){int n;char a,b;int outPutBuf[82][82];//用于预排版的输出缓存bool first=true;//是否为第一组数据标志 while(scanf("%d %c %c",&n,&a,&b)==3){//此处scanf 之间必须有空格,否则会将空格赋值给%c if(first==true){first=false;//若是第一组数据标志标记成false } else printf("\n");for(int i=1,j=1;i<=n;i+=2,j++){int x=n/2+1,y=x;//中心点坐标 x-=j-1;y-=j-1;//计算 每个圈右上角点的坐标char c=j%2==1?a:b;//计算当前圈需要使用哪个字符for(int k=1;k<=i;k++){//对当前圈进行赋值  outPutBuf[x+k-1][y]=c;//左边赋值  outPutBuf[x][y+k-1]=c;//上   outPutBuf[x+i-1][y+k-1]=c;//右   outPutBuf[x+k-1][y+i-1]=c; //下 } }if(n!=1){outPutBuf[1][1]=' ';outPutBuf[n][1]=' ';outPutBuf[1][n]=' ';outPutBuf[n][n]=' ';} for(int i=1;i<=n;i++){for(int j=1;j<=n;j++){printf("%c",outPutBuf[i][j]);}printf("\n");}}return 0;}