四级
C++ 算法考级专栏
真题分析、矩阵探测、递归回溯与基础语法
🎨 视觉封面【GESP】C++四级真题 luogu-B4360 [GESP202506 四级] 画布裁剪
📅 2025-09-14·✍️ OneCoder·计算中...·⏱️ 5 分钟
#GESP#C++#多维数组
GESP C++四级2025年6月真题。本题主要考查二维数组的应用。属于四级题中的简单题。难度⭐⭐☆☆☆。本题在洛谷评定为入门。
luogu-B4360 [GESP202506 四级] 画布裁剪
题目要求
题目描述
小 A 在高为 宽为 的矩形画布上绘制了一幅画。由于画布边缘留白太多,小 A 想适当地裁剪画布,只保留画的主体。具体来说,画布可以视为 行 列的字符矩阵,其中的字符均为 ASCII 码位于 之间的可见字符,小 A 只保留画布中由第 行到第 行、第 列到第 列构成的子矩阵。
小 A 将画布交给了你,你能帮他完成画布的裁剪吗?
输入格式
第一行,两个正整数 ,分别表示画布的行数与列数。
第二行,四个正整数 ,表示保留的行列边界。
接下来 行,每行一个长度为 的字符串,表示画布内容。
输出格式
输出共 行,每行一个长度为 的字符串,表示裁剪后的画布。
输入输出样例 #1
输入 #1
PLAINTEXT
3 5
2 2 2 4
.....
.>_<.
.....
输出 #1
PLAINTEXT
>_<
输入输出样例 #2
输入 #2
PLAINTEXT
5 5
1 2 3 4
AbCdE
fGhIk
LmNoP
qRsTu
VwXyZ
输出 #2
PLAINTEXT
Cd
hI
说明/提示
对于所有测试点,保证 ,,。
题目分析
本题是一道简单的二维数组操作题目。主要考察对字符矩阵的截取操作。
1. 数据结构设计
- 使用字符串数组
str_ary[105]存储输入的画布内容 - 数组大小设置为105是为了满足题目要求的最大范围(),并留有余量
2. 核心算法思路
- 首先读入画布的高度h和宽度w
- 读入需要保留的区域范围:行( 到 )和列( 到 )
- 读入整个画布内容,每行存储为一个字符串
- 按照指定范围输出子矩阵:
- 外层循环遍历行:从到
- 内层循环遍历列:从到
- 注意字符串下标从0开始,输出时需要将列坐标减1
3. 算法复杂度分析
-
时间复杂度
- 读入画布内容:
- 输出裁剪区域:
- 总体时间复杂度:
-
空间复杂度
- 存储画布内容:
- 其他变量:
- 总体空间复杂度:
示例代码
CPP
#include <iostream>
// 定义字符串数组存储画布内容,最大支持105行
std::string str_ary[105];
int main() {
// 声明画布的高度和宽度变量
int h, w;
std::cin >> h >> w;
// 声明裁剪区域的行列范围变量
int x1, x2, y1, y2;
std::cin >> x1 >> x2 >> y1 >> y2;
// 读入画布内容,每行一个字符串
for (int i = 1; i <= h; i++) {
std::cin >> str_ary[i];
}
// 输出裁剪后的画布内容
// 外层循环遍历选定的行范围
for (int i = x1; i <= x2; i++) {
// 内层循环遍历选定的列范围
for (int j = y1; j <= y2; j++) {
// 注意:由于字符串下标从0开始,所以这里需要j-1
std::cout << str_ary[i][j - 1];
}
// 每输出完一行后换行
std::cout << "\n";
}
return 0;
}
💡 OneCoder 资源指引
所有代码开源上传至 GitHub:yummy-code 仓库 · GESP 专题站:GESP WIKI
🤝 技术交流与答疑
欢迎加入:C++ GESP/CSP 考级答疑群(688906745) 与 Java/Python交流群(982860385),点击可直接加群。
📚
猜你想读 · 相关文章推荐
GESP 编程与算法 · 四级⏱️ 7 分钟
【GESP】C++四级练习 luogu-P5729 【深基5.例7】工艺品制作
GESP C++四级练习,二维/多维数组练习,难度★★☆☆☆。
阅读全文 →
GESP 编程与算法 · 四级⏱️ 7 分钟
【GESP】C++四级练习 luogu-P2550 [AHOI2001] 彩票摇奖
GESP C++四级练习,二维/多维数组练习,难度★★☆☆☆。
阅读全文 →
GESP 编程与算法 · 四级⏱️ 13 分钟
【GESP】C++四级练习 luogu-P2615 [NOIP 2015 提高组] 神奇的幻方
GESP C++四级练习,多维数组练习,难度★★☆☆☆。
阅读全文 →
OneCoder (lihongzheshuai)
一个中年人的自留地,记录学习 C++、GESP/NOI、Java、Python 与算法架构的心得体会。本站唯一网址:coderli.com
💬 读者留言与交流
还没有留言,快来成为第一个讨论者吧!