【题目来源】
【题目描述】
小 A 在高为 h 宽为 w 的矩形画布上绘制了一幅画。由于画布边缘留白太多,小 A 想适当地裁剪画布,只保留画的主体。具体来说,画布可以视为 h 行 w 列的字符矩阵,其中的字符均为 ASCII 码位于 33∼126 之间的可见字符,小 A 只保留画布中由第 x1 行到第 x2 行、第 y1 列到第 y2 列构成的子矩阵。
小 A 将画布交给了你,你能帮他完成画布的裁剪吗?
【输入格式】
第一行,两个正整数 h,w,分别表示画布的行数与列数。
第二行,四个正整数 x1,x2,y1,y2,表示保留的行列边界。
接下来 h 行,每行一个长度为 w 的字符串,表示画布内容。
【输出格式】
输出共 x2-x1+1 行,每行一个长度为 y2-y1+1 的字符串,表示裁剪后的画布。
【输入样例】
5 5
1 2 3 4
AbCdE
fGhIk
LmNoP
qRsTu
VwXyZ
【输出样例】
Cd
hI
【数据范围】
对于所有测试点,保证 1≤h,w≤100,1≤x1≤x2≤h,1≤y1≤y2≤w。
【算法分析】
代码实现了一个简单的矩阵区域提取功能。虽然写法传统,但清晰地展示了:
1. 二维数组的定义和使用
2. 双重循环遍历矩阵
3. 指定区域的提取和输出
对于初学者来说,这种写法有助于理解二维数组的基本操作。在实际项目中,建议使用 vector和 string等现代C++特性,提高代码的安全性和可读性。
【算法代码】
【参考文献】
