洛谷题解P4327 彼得潘框架

一、题目

https://www.luogu.org/problemnew/show/P4327

二、代码


#include<iostream>
#include<cstring>
using namespace std;

char a[6][62];
string s;

void frame(char c,int col,char flag)
{
    a[3][col]=c;
    // 第1行与第5行一样,所以a[1][col]=a[5][col]
    // 第2行关于col列对称,且与第4行一样。所以a[2][col+1]=a[r][col+1]=a[4][col-1]=a[2][col-1]
    // 第3行关于col列对称,所以a[3][col+2]=a[3][col-2]
    a[1][col]=a[2][col+1]=a[3][col+2]=a[4][col+1]=a[5][col]=a[4][col-1]=a[3][col-2]=a[2][col-1]=flag;
}

int main()
{
    memset(a,'.',sizeof(a));
    cin>>s;
    int n = s.size();
    
    // 注意观察第一行#或*出现的位置是4*i+3
    for(int i=0;i<n;i++)
    {
        // '*'先不画上
        if(i%3==2)
        {
            continue;
        }
        frame(s[i],4*i+3,'#');
    }

    for(int i=2;i<n;i+=3)
    {
        // 画上'*',若遇'#'直接覆盖
        frame(s[i],4*i+3,'*');
    }

    for(int i=1;i<6;i++)
    {
        for(int j=1;j<4*n+2;j++)
        {
            cout<<a[i][j];
        }
        cout<<endl;
    }

    return 0;
}

少儿编程、信息学竞赛咨询请加微信307591841或QQ群581357582

《洛谷题解P4327 彼得潘框架》 信息学竞赛公众号.jpg

    原文作者:海天一树X
    原文地址: https://www.jianshu.com/p/58562452512b
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞