当前位置: 首页 > news >正文

GESP认证C++编程真题解析 | B4263 [GESP202503 四级] 荒地开垦

欢迎大家订阅我的CSDN专栏:算法题解:C++与Python实现!
本专栏旨在帮助大家从基础到进阶 ,逐步提升编程能力,助力信息学竞赛备战!

专栏特色
1.经典算法练习:根据信息学竞赛大纲,精心挑选经典算法题目,提供清晰的代码实现与详细指导,帮助您夯实算法基础。
2.系统化学习路径:按照算法类别和难度分级,从基础到进阶,循序渐进,帮助您全面提升编程能力与算法思维。

适合人群:

  • 准备参加蓝桥杯、GESP、CSP-J、CSP-S等信息学竞赛的学生
  • 希望系统学习C++/Python编程的初学者
  • 想要提升算法与编程能力的编程爱好者

附上汇总帖:GESP认证C++编程真题解析 | 汇总


【题目来源】

洛谷:[B4263 GESP202503 四级] 荒地开垦 - 洛谷

【题目描述】

小杨有一大片荒地,可以表示为一个 \(n\)\(m\) 列的网格图。

小杨想要开垦这块荒地,但荒地中一些位置存在杂物,对于一块不存在杂物的荒地,该荒地可以开垦当且仅当其上下左右四个方向相邻的格子均不存在杂物。

小杨可以选择至多一个位置,清除该位置的杂物,移除杂物后该位置变为荒地。小杨想知道在清除至多一个位置的杂物的情况下,最多能够开垦多少块荒地。

【输入】

第一行包含两个正整数 \(n,m\),含义如题面所示。

之后 \(n\) 行,每行包含一个长度为 \(m\) 且仅包含字符 .# 的字符串。如果为 .,代表该位置为荒地;如果为 #,代表该位置为杂物。

【输出】

输出一个整数,代表在清除至多一个位置的杂物的情况下,最多能够开垦的荒地块数。

【输入样例】

3 5
.....
.#..#
.....

【输出样例】

11

【算法标签】

《洛谷 B4263 荒地开垦》 #模拟# #枚举# #GESP# #2025#

【代码详解】

#include <bits/stdc++.h>
using namespace std;// 定义常量N为地图最大尺寸
const int N = 1005;// 定义变量:n行数,m列数,ans初始答案
int n, m, ans;
// 定义二维数组存储地图,1表示障碍物,0表示空地
int a[N][N];
// 定义四个方向的偏移量:上、右、下、左
int dx[4] = {-1, 0, 1, 0}, dy[4] = {0, 1, 0, -1};// 检查(x,y)位置四周是否有障碍物
bool check(int x, int y)
{for (int i=0; i<4; i++)  // 遍历四个方向{int nx = x + dx[i], ny = y + dy[i];  // 计算相邻位置坐标// 如果相邻位置超出边界则跳过if (nx<1 || nx>n || ny<1 || ny>m) continue;// 如果相邻位置有障碍物则返回falseif (a[nx][ny]==1) return false;}// 四周都没有障碍物则返回truereturn true;
}int main()
{// 输入地图尺寸n行m列cin >> n >> m;// 读入地图数据for (int i=1; i<=n; i++)for (int j=1; j<=m; j++){char c; cin >> c;// 将'#'转换为1表示障碍物,其他为0表示空地if (c=='#') a[i][j] = 1;}// 计算初始状态下满足条件的空地数量for (int i=1; i<=n; i++)for (int j=1; j<=m; j++)// 如果是空地且四周没有障碍物if (a[i][j]==0 && check(i, j))ans++;  // 计数增加int res = 0;  // 记录最多能新增的满足条件的位置数// 尝试移除每个障碍物,计算能新增多少满足条件的位置for (int i=1; i<=n; i++)for (int j=1; j<=m; j++){int cnt = 0;  // 记录当前障碍物移除后的新增数量if (a[i][j]==1)  // 如果是障碍物{a[i][j] = 0;  // 临时移除障碍物// 检查这个位置本身是否满足条件if (check(i, j)) cnt++;// 检查这个位置四周的空地是否满足条件for (int k=0; k<4; k++){int nx = i + dx[k], ny = j + dy[k];// 跳过超出边界的位置if (nx<1 || nx>n || ny<1 || ny>m) continue;// 如果是空地且满足条件if (a[nx][ny]==0 && check(nx, ny)) cnt++;}a[i][j] = 1;  // 恢复障碍物}res = max(res, cnt);  // 更新最大值}// 输出初始满足条件的位置数加上最多能新增的数量cout << ans + res << endl;return 0;
}

【运行结果】

3 5
.....
.#..#
.....
11
http://www.jsqmd.com/news/257410/

相关文章:

  • GESP认证C++编程真题解析 | B4262 [GESP202503 三级] 词频统计
  • springboot微信小程序民宿预订管理系统设计与实现
  • 面试题_ZH
  • 2026年市场上口碑好的打包扣供应商有哪些,市面上打包扣源头厂家甄选实力品牌 - 品牌推荐师
  • 盘点2026年热门膜脱水厂供应商,膜脱水优质供货厂家哪家强? - 工业品牌热点
  • 2026年头部吊顶式空调机组品牌推荐排行榜,消防排烟风机/空气幕/新风换气机,吊顶式空调机组公司选哪家 - 品牌推荐师
  • 计算机专业毕业设计开发指南【一键消除烦恼】
  • 校园体育场馆(设施)使用管理网站毕业论文+PPT(附源代码+演示视频)
  • 实用指南:《统计学习方法》第6章——逻辑斯谛回归与最大熵模型(上)【学习笔记】
  • 2026年保湿修复乳推荐:基于临床验证的TOP10口碑排名与深度评测 - 十大品牌推荐
  • GESP认证C++编程真题解析 | B4261 [GESP202503 三级] 2025
  • 2026年保湿修复乳推荐:十大品牌五维修复机制评价及权威排名解析 - 十大品牌推荐
  • 2026年保湿修复乳推荐:2026年度横向对比评测与真实用户评价排名报告 - 十大品牌推荐
  • 2026年温泉工程公司推荐:五大服务商拆解评测及长期合作评价排名终极 - 十大品牌推荐
  • 2026年温室工程厂家实力推荐:青州市广源温室工程有限公司,连栋/智能/玻璃温室 - 品牌推荐官
  • 2026年订货系统平台推荐:基于行业权威评测的TOP5排名与深度评价 - 十大品牌推荐
  • 2026年温泉工程公司推荐:五大服务商深度评测及长期合作评价排名指南 - 十大品牌推荐
  • 如何挑选合适的订货系统?2026年最新五大平台评测与推荐排名 - 十大品牌推荐
  • 读人本智能产品设计6原则04表达(上)
  • 2026常德时尚照明灯具厂家排名,这些品牌性价比高值得关注 - 工业品牌热点
  • 2026年订货系统平台推荐:聚焦用户口碑对比的深度评测及权威排名 - 十大品牌推荐
  • 2026年深圳led发光字施工安装公司权威推荐榜单:广告招牌施工/发光字设计安装/广告招牌安装 /发光字定制 /广告招牌施工/门头招牌综合服务商精选 - 品牌推荐官
  • Cloudflare D1 免费额度:馅饼还是陷阱?
  • 2024年Java后端开发技能树(附学习路线图)
  • docker都没法访问了,都无法安装,镜像也不可以下载,还需要学习docker么
  • 如何用一款刷题APP,高效通关华为数通认证?我的HCIP备考心得分享
  • 杰理之开启小度后无法生成不同的蓝牙名和BLE名字【篇】
  • 基于SpringBoot的绘画约稿交易服务平台
  • 杰理之设置DAC输出为24Bit,连接小度APP后会变调【篇】
  • 杰理之强制同时使能声卡和混合录音功能【篇】