洛谷 1498 南蛮图腾——模拟

题目:https://www.luogu.org/problemnew/show/P1498

每多1,长和宽翻倍。先把图案移到下面,同时把下面的右边也弄上,然后把上面清空,找准位置copy下面的图案。

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int N=1030;
int A,n,m;
char a[N][N<<1];
void init()
{
    n=2;m=4;
    a[1][1]=a[1][4]=' ';a[1][2]=a[2][1]='/';
    a[1][3]=a[2][4]='\\';a[2][2]=a[2][3]='_';
}
int main()
{
    init();
    scanf("%d",&A);
    while(--A)
    {
        int yn=n,ym=m;n<<=1;m<<=1;
        for(int i=yn+1;i<=n;i++)
            for(int j=1;j<=ym;j++)
                a[i][j]=a[i-yn][j],a[i][j+ym]=a[i][j];
        for(int i=1;i<=yn;i++)
            for(int j=1;j<=m;j++)a[i][j]=' ';
        for(int i=1;i<=yn;i++)
            for(int j=(ym>>1)+1,k=1;k<=ym;j++,k++)
                a[i][j]=a[i+yn][k];
    }
    for(int i=1;i<=n;i++)
    {
        for(int j=1;j<=m;j++)printf("%c",a[i][j]);
        if(i!=n)printf("\n");
    }
    return 0;
}

 

posted on 2018-08-01 19:47  Narh  阅读(110)  评论(0编辑  收藏  举报

导航