您的位置:首页 > 其它

HDU 2070 叠框

2015-11-22 16:46 567 查看

叠筐

Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 15529 Accepted Submission(s): 4049[align=left]Problem Description[/align]需要的时候,就把一个个大小差一圈的筐叠上去,使得从上往下看时,边筐花色交错。这个工作现在要让计算机来完成,得看你的了。[align=left]Input[/align]输入是一个个的三元组,分别是,外筐尺寸n(n为满足0<n<80的奇整数),中心花色字符,外筐花色字符,后二者都为ASCII可见字符;[align=left]Output[/align]输出叠在一起的筐图案,中心花色与外筐花色字符从内层起交错相叠,多筐相叠时,最外筐的角总是被打磨掉。叠筐与叠筐之间应有一行间隔。[align=left]Sample Input[/align]
11 B A5 @ W
[align=left]Sample Output[/align]
 AAAAAAAAAABBBBBBBBBAABAAAAAAABAABABBBBBABAABABAAABABAABABABABABAABABAAABABAABABBBBBABAABAAAAAAABAABBBBBBBBBAAAAAAAAAA@@@@WWW@@W@W@@WWW@@@@ 
[align=left]Author[/align]qianneng[align=left]Source[/align]浙江工业大学网络选拔赛 题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=2074先给一个数,表示框的大小,再给两个字符,从筐的中心一次往外叠注意:四个角均为空格!!题目中的叙述的是从中间往外叠,但我的代码是从外往里叠,有的时候会有差异!(判断n来调整两个字符即可)
#include <stdio.h>int main(){char a[85][85];int n,i,j,flag;char x,y,t;flag=0;while(scanf("%d",&n)!=EOF){getchar();scanf("%c %c",&x,&y);if(flag){printf("\n");}if(n==1){printf("%c\n",x);continue;}if((n+1)%4==0){t=x;x=y;y=t;}flag=1;for(i=0;i<n;i++){for(j=0;j<n;j++){if(i>=j&&i+j<=n||i<=j&&i+j>=n){if(j%2==0){a[i][j]=x;}else{a[i][j]=y;}}if(i<j&&i+j<n||i>=j&&i+j>=n){if(i%2==0){a[i][j]=x;}else{a[i][j]=y;}}}}a[0][0]=' ';a[0][n-1]=' ';a[n-1][0]=' ';a[n-1][n-1]=' ';for(i=0;i<n;i++){for(j=0;j<n;j++){printf("%c",a[i][j]);}printf("\n");}flag=1;}return 0;}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: