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的主要内容,如果未能解决你的问题,请参考以下文章

I - Beat HDU - 2614 DFS

如何有效使用 杭电 hdu oj

怎样用java实现小数的四舍五入?

优化算法天牛须搜索优化粒子群算法含Matlab源码 1256期

1256 打鼹鼠

ADS1256使用心得及其驱动编写 [原创]