一, 题目
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
来源: http://www.jianshu.com/p/58562452512b