news 2026/5/2 6:00:09

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
GESP认证C++编程真题解析 | B4263 [GESP202503 四级] 荒地开垦

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

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

适合人群:

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

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


【题目来源】

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

【题目描述】

小杨有一大片荒地,可以表示为一个n nnm mm列的网格图。

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

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

【输入】

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

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

【输出】

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

【输入样例】

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

【输出样例】

11

【算法标签】

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

【代码详解】

#include<bits/stdc++.h>usingnamespacestd;// 定义常量N为地图最大尺寸constintN=1005;// 定义变量:n行数,m列数,ans初始答案intn,m,ans;// 定义二维数组存储地图,1表示障碍物,0表示空地inta[N][N];// 定义四个方向的偏移量:上、右、下、左intdx[4]={-1,0,1,0},dy[4]={0,1,0,-1};// 检查(x,y)位置四周是否有障碍物boolcheck(intx,inty){for(inti=0;i<4;i++)// 遍历四个方向{intnx=x+dx[i],ny=y+dy[i];// 计算相邻位置坐标// 如果相邻位置超出边界则跳过if(nx<1||nx>n||ny<1||ny>m)continue;// 如果相邻位置有障碍物则返回falseif(a[nx][ny]==1)returnfalse;}// 四周都没有障碍物则返回truereturntrue;}intmain(){// 输入地图尺寸n行m列cin>>n>>m;// 读入地图数据for(inti=1;i<=n;i++)for(intj=1;j<=m;j++){charc;cin>>c;// 将'#'转换为1表示障碍物,其他为0表示空地if(c=='#')a[i][j]=1;}// 计算初始状态下满足条件的空地数量for(inti=1;i<=n;i++)for(intj=1;j<=m;j++)// 如果是空地且四周没有障碍物if(a[i][j]==0&&check(i,j))ans++;// 计数增加intres=0;// 记录最多能新增的满足条件的位置数// 尝试移除每个障碍物,计算能新增多少满足条件的位置for(inti=1;i<=n;i++)for(intj=1;j<=m;j++){intcnt=0;// 记录当前障碍物移除后的新增数量if(a[i][j]==1)// 如果是障碍物{a[i][j]=0;// 临时移除障碍物// 检查这个位置本身是否满足条件if(check(i,j))cnt++;// 检查这个位置四周的空地是否满足条件for(intk=0;k<4;k++){intnx=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;return0;}

【运行结果】

3 5 ..... .#..# ..... 11
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/29 15:14:58

毕设指南【一键到位】

前言 毕业设计是计算机专业学生大学四年的综合检验&#xff0c;是将理论知识转化为实践能力的关键环节。面对从选题、开发到论文、答辩的全过程&#xff0c;很多同学常感迷茫与压力。 本指南基于实际指导经验&#xff0c;聚焦毕设核心要点&#xff0c;提供从技术选型、开发实…

作者头像 李华
网站建设 2026/4/18 3:35:56

SenseVoice Small语音理解模型深度体验|支持多语言与情感识别

SenseVoice Small语音理解模型深度体验&#xff5c;支持多语言与情感识别 1. 引言&#xff1a;语音理解技术的新范式 随着大模型在语音领域的持续渗透&#xff0c;传统的自动语音识别&#xff08;ASR&#xff09;已逐步向“富转录”&#xff08;Rich Transcription&#xff0…

作者头像 李华
网站建设 2026/4/25 3:18:28

通义千问2.5-7B效果展示:8K长文本生成实测

通义千问2.5-7B效果展示&#xff1a;8K长文本生成实测 1. 背景与测试目标 随着大语言模型在自然语言理解与生成任务中的广泛应用&#xff0c;长文本生成能力成为衡量模型实用性的重要指标之一。尤其在技术文档撰写、报告生成、小说创作等场景中&#xff0c;对超过8K tokens的…

作者头像 李华
网站建设 2026/4/30 10:06:37

如何高效部署轻量化多模态模型?AutoGLM-Phone-9B详细安装与调用指南

如何高效部署轻量化多模态模型&#xff1f;AutoGLM-Phone-9B详细安装与调用指南 1. AutoGLM-Phone-9B 模型概述 1.1 轻量化多模态模型的技术背景 随着移动设备智能化需求的不断增长&#xff0c;大语言模型在终端侧的应用逐渐成为研究热点。然而&#xff0c;传统大模型通常参…

作者头像 李华
网站建设 2026/4/18 3:36:34

超越Spark与Celery:深入Ray分布式计算框架的架构与高级模式

好的&#xff0c;遵照您的要求。以下是一篇关于 Ray 分布式计算 API 的深度技术文章&#xff0c;旨在为开发者提供新颖的视角和实用的洞察。超越Spark与Celery&#xff1a;深入Ray分布式计算框架的架构与高级模式 引言&#xff1a;分布式计算的“新常态”与Ray的诞生 在当今以 …

作者头像 李华
网站建设 2026/5/1 3:33:50

AI智能文档扫描仪用户反馈实录:实际使用体验与改进建议

AI智能文档扫描仪用户反馈实录&#xff1a;实际使用体验与改进建议 1. 引言&#xff1a;从办公痛点出发的轻量级解决方案 在日常办公场景中&#xff0c;快速将纸质文档转化为清晰、规整的电子文件是一项高频需求。传统扫描仪设备受限于体积和便携性&#xff0c;而手机拍照又面…

作者头像 李华