hdu 2074 打印水题 叠筐

以前总是,得一行打印一行,现在可以将全部存储以后,再一次性输出,很好的方法

还有就是行数的奇偶控制,很有效。找出n与,a,b的规律

#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;

int n;
char a[81][81];

void eva(int x, char c)
{ 
        int     i = x;
        int     j = x;
        if(2*x>n) a[i][j]=c;
        else
        {
                for(;j<=n-x;j++) a[i][j]=c;
                for(;i<=n-x;i++) a[i][j]=c;
                for(;j>x;j--) a[i][j]=c;
                for(;i>x;i--) a[i][j]=c;
        }
} 

int main(void)
{
    int i, j, t = 0;
    char c[2][2];
    
    while (scanf("%d%s%s", &n, c, c+1) != EOF)
    {
        if (t++) putchar('\n');
        if (n == 1)
        {
            printf("%c\n", c[0][0]);
            continue;
        }
        memset(a, 0, sizeof(a));
        if (!(n/2%2)) swap(c[0][0], c[1][0]);
        for (i=1; i<=n/2+n%2; eva(i, c[i&1][0]), i++);
        a[1][1] = ' ';a[1][n] = ' ';
        a[n][1] = ' ';a[n][n] = ' ';
        for(i=1;i<=n;i++)
        {
            for(j=1;a[i][j];j++)
                putchar(a[i][j]);
            putchar('\n');
        }        
    }
    return 0;
}

  

posted @ 2012-04-04 10:20  shijiwomen  阅读(223)  评论(0编辑  收藏  举报