【错题集-编程题】腐烂的苹果(多源 BFS + 最短路)

ops/2024/9/23 14:33:17/

题目链接:腐烂的苹果_牛客题霸_牛客网 (nowcoder.com)


一、分析题目

多源 BFS 问题,加一点最短路的思想,固定套路。


二、代码

//看了题解之后AC的代码
class Solution {
private:int n, m;bool vis[1010][1010];int dx[4]={-1,0,1,0}, dy[4]={0,1,0,-1};
public:/*** 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可** * @param grid int整型vector<vector<>> * @return int整型*/int rotApple(vector<vector<int> >& grid) {n=grid.size(), m=grid[0].size();queue<pair<int, int>> q;for(int i=0; i<n; i++)for(int j=0; j<m; j++)if(grid[i][j]==2)q.push({i, j});int t=0;while(q.size()){t++;int size=q.size();while(size--){auto [a, b]=q.front();q.pop();for(int k=0; k<4; k++){int x=a+dx[k], y=b+dy[k];if(x>=0 && x<n && y>=0 && y<m && !vis[x][y] && grid[x][y]==1){vis[x][y]=true;q.push({x, y});}}}}for(int i=0; i<n; i++)for(int j=0; j<m; j++)if(!vis[i][j] && grid[i][j]==1)return -1;return t-1;}
};//值得学习的代码
class Solution
{int m, n;int dx[4] = {0, 0, 1, -1};int dy[4] = {1, -1, 0, 0};bool vis[1010][1010] = { 0 };public:int rotApple(vector<vector<int> >& grid) {m = grid.size(), n = grid[0].size();queue<pair<int, int>> q;for(int i = 0; i < m; i++)for(int j = 0; j < n; j++)if(grid[i][j] == 2)q.push({i, j});int ret = 0;while(q.size()){int sz = q.size();ret++;while(sz--){auto [a, b] = q.front();q.pop();for(int i = 0; i < 4; i++){int x = a + dx[i], y = b + dy[i];if(x >= 0 && x < m && y >= 0 && y < n && grid[x][y] == 1 && !vis[x][y]){vis[x][y] = true;q.push({x, y});}}}}for(int i = 0; i < m; i++)for(int j = 0; j < n; j++)if(grid[i][j] == 1 && !vis[i][j]) return -1; return ret - 1;}
};

三、反思与改进

这道题目我是用 dfs 做的,暴力过了 70% 的样例,但我很清楚正确答案肯定是要用到 bfs,是层序遍历整个网格,但在做题的时候把 bfs 最基本的内容给忘记了,连其对应辅助的栈结构都没想起来。还有一个主要原因是:多源 bfs 这一块我还没有进行系统性的学习,目前只接触了最基础的 bfs,不过我不认为这是做不出这道题目的理由,究其根本是连本质都忘记了,而不是 bfs 的扩展没学习到,所以要抓紧时间把 bfs 相关算法学习完,并将其算法原理熟烂于心。


http://www.ppmy.cn/ops/17916.html

相关文章

ROS机器人实战,对标古月老师HRMRP机器人(一)——机器人总体方案设计

咳咳&#xff01;这个是自己的毕业设计&#xff0c;内容比较多就拆开发。设计实现了一款SLAM移动机器人&#xff0c;加机械臂完成视觉识别抓取的&#xff0c;同时还有语音识别控制、QT上位机控制、Web网页控制。前几年看古月老师的视频&#xff0c;看到古月老师设计的HRMRP&…

北京市高级职称破格申报推荐表

北京市高级职称破格申报推荐表 推荐人 基本情况 姓名 证件类型 证件号码 工作单位及职务 专业领域 联系方式 职称 证书编号 授予单位 取得时间 申报人 基本情况 姓名 证件类型 证件号码 工作单位及职务 申报职称 申报级别 申…

阿里云mysql8.0 this is incompatible withsql mode=only full group by

阿里云RDS中mysql5.6升级为8.0后&#xff0c;出现如下问题&#xff1a; ### Error querying database. Cause:java.sql.SQLSyntaxErrorException: Expression #1 of SELECT listis not in GROUP BY clause and contains nonaggregatedcolumn temp.product_id which is not fun…

大语言模型在研究领域的应用——信息检索中的大语言模型

信息检索中的大语言模型 大语言模型提升信息检索任务利用大语言模型进行信息检索大语言模型增强的信息检索模型. 检索增强的大语言模型输入优化策略.指令微调策略.预训练策略. 总结应用建议未来方向 大语言模型对于传统信息检索技术与应用范式带来了重要影响。这两者在技术路径…

【入门篇】本章包括创建云项目、数据库的使用、云存储管理、云函数的基本使用、实战举例(小程序之云函数开发入门到使用发布上线实操)

云函数 云函数相当于服务器接口的概念,它并属于小程序端代码。它是以函数的形式运行后端代码来响应事件以及调用其他服务。运行环境是Node.js。 一、基创建云函数项目 打开微信开发者工具: 打开微信开发者工具,并登录你的微信开发者账号。 创建项目: 如果还没有创建项目,你…

茴香豆:搭建你的RAG智能助理-笔记三

本次课程由书生浦语社区贡献者【北辰】老师讲解【茴香豆&#xff1a;搭建你的 RAG 智能助理】课程 课程视频&#xff1a;https://www.bilibili.com/video/BV1QA4m1F7t4/ 课程文档&#xff1a;Tutorial/huixiangdou/readme.md at camp2 InternLM/Tutorial GitHub 该课程&…

设计模式之组合模式

1、详细介绍 组合模式&#xff08;Composite Pattern&#xff09;是一种结构型设计模式&#xff0c;它将对象结构&#xff08;树形结构&#xff09;中的对象&#xff08;包括叶子节点和容器节点&#xff09;都看作同一类型的对象&#xff0c;从而使得客户端可以一致地处理单个对…

TypeScript 项目报错Projects must list all files or use an include pattern

文章目录 原因分析解决方案使用include和exclude使用files 总结 这条错误信息&#xff1a;“Projects must list all files or use an include pattern”通常与TypeScript项目的配置有关&#xff0c;特别是在处理 tsconfig.json文件时。这个错误提示你需要在 tsconfig.json中…