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

Mikemao666
科学研究不应该只追求表象,而是要通过实验去验证猜想,去获得真理。 ——沃斯特姆夫斯基•胡搬运于
2025-08-24 22:19:39,当前版本为作者最后更新于2020-04-11 19:59:10,作者可能在搬运后再次修改,您可在原文处查看最新版自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多
以下是正文
这次我要来一波完整丰富的分析。
题意
首先,输入四个数;前两个是报纸的行数、列数,后两个是放大镜的两个“参数”(具体后面会讲)。
让后,按行数 r、列数 c 输入一个字符矩阵。
这里我们就要想到:用二维数组
让后,我们要按题目要求,把每一个小字符“放大”。
那这里什么叫放大呢?
题目解释: 把每个字符都转换成一个 zr 行 zc 列的矩阵。
实际上就是:把原来的每一个字符复制zr行、复制zc列!
但单个字符作矩阵输出是不现实的(程序按行输出)。
所以我们想到:用四重循环!
so……
for(int i=1;i<=r;i++) for(int j=1;j<=c;j++) for(int m=1;m<=zr;m++) for(int l=1;l<=zc;l++) putchar(a[m][l]);这就对了吗???
错!
这种写法过于想当然。
Dev:你第一次不是这样写的?我们要输出的,是由原来的字符组成的许多矩阵。
其中的m、l只是用于控制放大行数、列数的,不能用作输出字符!
输出工作应交给其中的i,j 。
如果你上面都懂了,那这道题也差不多A了。
**注意!**四重循环尤其小心!增量不要搞混!
为此我调了数次,输出来什么都不知道
code:
#include<bits/stdc++.h> using namespace std; char a[55][55]; int main () { int r,c,zr,zc;//老老实实按题目定义 cin>>r>>c>>zr>>zc;//r:原行数 c:原列数 zr:放大行数 zc放大列数 for(int i=1;i<=r;++i){ for(int j=1;j<=c;++j){ cin>>a[i][j]; } }//常规二维数组输入 for(int i=1;i<=r;i++){//四重循环 //这里控制原行数 for(int m=1;m<=zr;m++){ //枚举放大后的行数 for(int j=1;j<=c;j++){ //这里控制原列数 for(int l=1;l<=zc;l++)//枚举放大后的列数 putchar(a[i][j]);//输出 (快捷) } printf("\n");//换行位置很重要 (在这一行所有列的字符输完 后再换行) } } return 0; }
- 1
信息
- ID
- 5356
- 时间
- 1000ms
- 内存
- 32MiB
- 难度
- 1
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者