一、题目
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
信息学竞赛公众号.jpg
网友评论