arrow_upward

洛谷1498 南蛮图腾 普及/提高-

@Llf0703  November 28, 2018
题目链接

昨天做了,为了抢夜宵就没写

自己做了半天,感觉及其恶心,就去看了题解,发现了一种及其巧妙的写法。

这种写法的原理就是按照2的整数幂次将一共 $2^{n}$ 行分成 $n$ 组来操作,操作就是把之前的图形左右各复制一个即可,只是要注意要在前后加上空格。

int n,m;
string ans[1100];

inline void work(int x)
{
    int mx=x*2;
    for (int i=x;i<mx;i++) ans[i]=ans[i-x]+ans[i-x];
    for (int i=0;i<x;i++)
    {
        ans[i].insert(0,x,' ');
        ans[i].insert(ans[i].length(),x,' ');
    }
}

int main()
{
    n=read(); m=1<<n;
    ans[0]=" /\\ ";
    ans[1]="/__\\";
    for (int i=1;i<n;i++) work(1<<i);
    for (int i=0;i<m;i++) cout<<ans[i]<<"\n";
    return 0;
}

本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。
This work is licensed under a CC BY-SA 4.0 International License .

本文链接:https://llf0703.com/p/luogu-1498.html

添加新评论