1 条题解
-
0
自动搬运
来自洛谷,原作者为

wdcxz
**搬运于
2025-08-24 21:59:02,当前版本为作者最后更新于2018-08-02 20:58:03,作者可能在搬运后再次修改,您可在原文处查看最新版自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多
以下是正文
c++代码
比较水的模拟题,不过我也写了好久,最后发现只是数组开小了,改掉就对了。。。
下面是解析:这题先把储存的数组全赋值为‘ . ’再求长度(因为宽度恒为5,不用求),长度等于5倍的字母个数减去字母个数最后加一,求出长度后,求第一个字母的位置,易得为3,之后每个位置都要加4,再根据每个字母的位置写出周围的符号,注意,这里有一个特判,若空间已被‘ * ’占掉,则什么也不干,最后输出即可
#include <bits/stdc++.h>//万能头,好东西 using namespace std; int len,lena,ll=3,aa;//ll为第一个字母的初始位置 char a[20],b[1000][100],c; int main(){ cin>>a;//输入初始字符串 len=strlen(a);//求出字符串长度,strlen()函数能求出字符串长度 lena=4*len+1;//求出输出字符矩阵的长度,宽度恒为五 memset(b,'.',sizeof(b));//将b数组全赋值为‘.’,以便后来使用 while(ll<=lena){//开始循环 aa++;//到第aa个字母 if(aa%3==0)c='*'; else c='#';//若为3的倍数个,则用‘*’ b[3][ll]=a[aa-1];//把字母填入b数组中 b[1][ll]=c; b[5][ll]=c; b[2][ll-1]=c; b[2][ll+1]=c; b[4][ll-1]=c; b[4][ll+1]=c;//根据字母的位置推出其他字符的位置,并填入b数组中 if(b[3][ll-2]!='*')b[3][ll-2]=c; if(b[3][ll+2]!='*')b[3][ll+2]=c;//特判,若以被‘*’覆盖,则不能被‘#’覆盖 ll+=4;//之后每个字母的为止为前一个加4 } for(int i=1;i<=5;i++){ for(int j=1;j<=lena;j++) cout<<b[i][j];//输出 cout<<endl;//不要忘了每行要加回车 } return 0;//end } //wdcxz
- 1
信息
- ID
- 3292
- 时间
- 1000ms
- 内存
- 32MiB
- 难度
- 1
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者