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

轰炸敌人,最多可以摧毁的敌人城堡数目

我的解法:

对于每一个空位置,进行一次bfs,从上下左右四个方向去寻找,这是岛屿问题的相似处理,但是这个题可以优化,因为横竖方向可以进行动规优化。

我们不需要对每个0都重新数一遍它所在的行和列有多少敌人。

  • :对于同一行里、两个墙之间的所有格子,它们能炸到的“行敌人”数量是一样的。我们只在行的开头或者刚经过一个墙之后,重新计算当前这段的敌人数量。

  • :同理,对于同一列里、两个墙之间的所有格子,它们能炸到的“列敌人”数量也是一样的。我们可以用一个数组colHits[]来缓存每一列当前段的敌人数量。

#include <vector> #include <algorithm> using namespace std; class Solution { public: int maxKilledEnemies(vector<vector<char>>& grid) { if (grid.empty() || grid[0].empty()) return 0; int m = grid.size(); int n = grid[0].size(); int result = 0; int rowHits = 0; // 缓存当前行这一段(两墙之间)的敌人数量 vector<int> colHits(n, 0); // 缓存每一列当前段的敌人数量 for (int i = 0; i < m; ++i) { for (int j = 0; j < n; ++j) { // 1. 处理行:如果是行的开头,或者前一个是墙,就需要重新统计这一段行里的敌人 if (j == 0 || grid[i][j-1] == 'W') { rowHits = 0; // 向右扫描直到碰到墙或边界 for (int k = j; k < n && grid[i][k] != 'W'; ++k) { if (grid[i][k] == 'E') rowHits++; } } // 2. 处理列:如果是列的开头,或者上面一个是墙,就需要重新统计这一段列里的敌人 if (i == 0 || grid[i-1][j] == 'W') { colHits[j] = 0; // 向下扫描直到碰到墙或边界 for (int k = i; k < m && grid[k][j] != 'W'; ++k) { if (grid[k][j] == 'E') colHits[j]++; } } // 3. 只有当前位置是空位 '0' 时,才能放炸弹 if (grid[i][j] == '0') { result = max(result, rowHits + colHits[j]); } } } return result; } };

2511. 最多可以摧毁的敌人城堡数目

e摧毁的敌人城堡数目,所以我们返回 4 。
class Solution { public: int captureForts(vector<int>& forts) { int res = 0; int pre = -1; // 表示不存在 for(int i = 0; i < forts.size(); i++) { if(forts[i] != 0) { if(pre >= 0 && forts[i] != forts[pre]) // 1 和 -1 或者 -1 和 1出现 res = max(res, i - pre - 1); pre = i; } } return res; } };
http://www.jsqmd.com/news/294409/

相关文章:

  • 汉诺塔问题及其扩展
  • 揭秘天猫超市购物卡回收其中的猫腻
  • Spring Cloud Alibaba 2025.0.0 整合 ELK 实现日志 - 详解
  • 三分之一2-5天和三分之二6-13天资金利用率对比学习
  • Android关机
  • 221_尚硅谷_实现接口和继承比较(2)
  • 2026年苏州智能硬件设计公司推荐:飓风工业设计,企业产品设计/专业工业设计/产品外观设计/电子产品设计/工业设计/机械产品设计公司精选
  • 2026年国内知名的投影机品牌排名,激光投影仪/20000流明投影机出租/画展投影机出租/雾幕投影机,投影机公司排行
  • JAVA自学之路1.1:JAVA入门纠错
  • 2026软考高级系统架构师备考资料-录播+直播
  • 微信立减金回收攻略,方法、流程与折扣全解析
  • 安达发|精准排产,守护生命:医疗器械行业车间排产的数字化革命
  • 2026年市场评价好的纸盒品牌推荐排行,纸盒/彩印包装/农产品纸箱/工业纸盒/纸箱/工业纸箱,纸盒批发厂家推荐排行
  • Deepseek问答:开发人员如何选书
  • php开源短视频源码,JSON对象转化API
  • 短视频平台php源码,字符缓冲流的特有功能
  • 短视频app搭建,如何实现毛玻璃效果?
  • 小视频平台源码,ElementUI 本地分页
  • C 语言基础:输入输出、运算符与流程控制全梳理
  • 鸿蒙APP开发从入门到精通:ArkUI组件库详解与常用组件实战
  • Typescript——泛型
  • Win11 轻松设置更新暂停至 2042年告别过度弹窗 卸载系统冗余软件
  • 实战复盘:如何用 HTML+JS+AI 打造一款“影迹”智能影视管理系统
  • 从对象结构到锁机制:Java 对象锁与类锁深度解析
  • 什么是 Java 中的原子性、可见性和有序性?
  • 2000亿美元!2026年全球游戏行业的新格局与新变量
  • 使用 wxPython 构建文件编辑器与预览器:从零到一的完整实现
  • 从零构建轻量级企业考勤订饭系统:Node.js + SQLite 全栈实战复盘
  • python如何发送邮件
  • 【课程设计/毕业设计】基于Springboot的在线游戏商城系统基于springboot的游戏售卖商城系统【附源码、数据库、万字文档】