首页 > 代码库 > hduoj 2074 叠筐
hduoj 2074 叠筐
叠筐
Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 12122 Accepted Submission(s): 3122
Problem Description
需要的时候,就把一个个大小差一圈的筐叠上去,使得从上往下看时,边筐花色交错。这个工作现在要让计算机来完成,得看你的了。
Input
输入是一个个的三元组,分别是,外筐尺寸n(n为满足0<n<80的奇整数),中心花色字符,外筐花色字符,后二者都为ASCII可见字符;
Output
输出叠在一起的筐图案,中心花色与外筐花色字符从内层起交错相叠,多筐相叠时,最外筐的角总是被打磨掉。叠筐与叠筐之间应有一行间隔。
Sample Input
11 B A5 @ W
Sample Output
AAAAAAAAA ABBBBBBBBBAABAAAAAAABAABABBBBBABAABABAAABABAABABABABABAABABAAABABAABABBBBBABAABAAAAAAABAABBBBBBBBBA AAAAAAAAA @@@ @WWW@@W@W@@WWW@ @@@
题意明确,就是打印图案,最中间的字母是第一个字母,但是该题目很坑,坑一:每组数据之间多有一个换行;坑儿:右上角和右下角必须是空格;
代码是一圈一圈控制的,简单明了!
#include <stdio.h>#include <string.h>char a[80][80]; char c,d,e;int n;void f(int v){ int i,j; char t; if(v%2==1) t=c; else t=d; for(i=v;i<=n+1-v;i++) { a[i][v]=t; a[i][n+1-v]=t; } for(j=v;j<=n+1-v;j++) { a[v][j]=t; a[n+1-v][j]=t; } }int main(){ int i,j,t,k=1; while(scanf("%d %c %c",&n,&c,&d)!=EOF) { if(k!=1) printf("\n"); if(n==1) { printf("%c\n",c); continue; } t=n/2+1; if(t%2==0) { e=c;c=d;d=e; } for(i=1;i<=t;i++) f(i); a[1][n]=a[1][1]=a[n][1]=a[n][n]=' '; for(i=1;i<=n;i++) { for(j=1;j<=n;j++) printf("%c",a[i][j]); printf("\n"); } k++; } }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。