首页 > 代码库 > HDU2074 叠筐
HDU2074 叠筐
叠筐
Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 12124 Accepted Submission(s): 3123
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@ @@@
这题必须要很细心而且要注意特殊数据,比如n=1时。
#include <stdio.h>#define maxn 82char map[maxn][maxn];int main(){ int n, i, j, k, sign, len, ii, cas = 1; char ch[2]; while(scanf("%d %c %c", &n, &ch[0], &ch[1]) != EOF){ sign = ((n / 2) & 1); for(i = 0; i < n / 2; ++i, sign = !sign){ len = n - i * 2; k = len - 1; j = i; while(k--) map[i][j++] = ch[sign]; k = len - 1; ii = i; while(k--) map[ii++][j] = ch[sign]; k = len - 1; while(k--) map[ii][j--] = ch[sign]; k = len - 1; while(k--) map[ii--][j] = ch[sign]; } map[n/2][n/2] = ch[0]; if(n != 1) map[0][0] = map[0][n-1] = map[n-1][0] = map[n-1][n-1] = ' '; if(cas++ != 1) printf("\n"); for(i = 0; i < n; ++i){ map[i][n] = '\0'; printf("%s\n", map[i]); } } return 0;}
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。