hdu1256
Posted qiuhua7777
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了hdu1256相关的知识,希望对你有一定的参考价值。
画横线总是一个字符粗,竖线随着总高度每增长6而增加1个字符宽.当总高度从5增加到6时,其竖线宽度从1增长到2.下圈高度不小于上圈高度,但应尽量接近上圈高度,且下圈的内径呈正方形.
每画一个"8"应空一行,但最前和最后都无空行.
Sample Input
2
A 7
B 8
Sample Output
这道题是字符串类型的题目,可以先在草稿本上画出,求出竖线的宽度与给出高度的关系以及横线宽度与高度的关系(考虑高度的奇偶)。在需要输出的图中,就只由第一行图案和第二行图案构成,所以可以先构建两个字符串,再在特定的位置输出字符串。
1、封装出出两个字符串,设竖线的宽度为x,横线宽度为y,即可写出两个字符串,注意在字符串末尾加"\\0";2、一行一行的输出字符串。在特定的位置输出。
#include<stdio.h> #include<string.h> char a[500007], b[500007]; int main() { int T; scanf("%d", &T); while(T--){ getchar(); char ch; int n; scanf("%c%d", &ch, &n); int x, y; x = 1 + n / 6; y = n & 1 ? (n - 3) / 2 : (n - 3) / 2 + 1;//// memset(a, 0, sizeof(a)); memset(b, 0, sizeof(b)); int i, j; for(i = 0; i < x; i++) a[i] = ‘ ‘; for(j = 0; j < y; j++) a[x + j] = ch; a[x + y] = ‘\\0‘; for(i = 0; i < x; i++) b[i] = ch; for(j = 0; j < y; j++) b[x + j] = ‘ ‘; for(i = 0; i < x; i++) b[x + y + i] = ch; for(i = 0; i < n; i++){ if(i == 0 || i == n - 1 || i == (n & 1 ? n / 2 : n / 2 - 1)) puts(a); else puts(b); } if(T != 0) puts(""); } return 0; }
以上是关于hdu1256的主要内容,如果未能解决你的问题,请参考以下文章