广度优先搜索处理橘子腐烂问题

阅读: 评论:0

广度优先搜索处理橘子腐烂问题

广度优先搜索处理橘子腐烂问题

在给定的网格中,每个单元格可以有一下三个值之一:
①值为0,代表空单元格
②值为1,代表新鲜橘子
③值为2,代表腐烂橘子

每分钟,任何与腐烂橘子相邻的4个方向(上下左右)相邻的橘子都会腐烂。返回直到单元格没有新鲜橘子为止所必须经过的最小时间。如果不可能则返回-1。

分析:该问题是模拟广度搜索的过程,从起点出发,每次都尝试访问同一层的节点,如果同一层都访问完了,再访问下一层,最后广度优先搜索到的路径就是从起点开始的最短合法路径。

class Solution
{public:int orangesRotting(vector<vector<int>>& grid){int directions[4][2]={{-1,0},{1,0},{0,-1},{0,1}};//四个方向int row=grid.size();int colum=grid[0].size();int time=0;//完成感染所需时间queue<pair<int,int>> q;//保存腐烂橘子int count=0;//新鲜橘子的数量for(int i=0;i!=row;i++){for(int j=0;j!=colum;j++){if(grid[i][j]==1) count++;if(grid[i][j]==2) q.push({i,j});}}if(count==0) return time;while(!q.empty()){time++;for(int j=q.size();j>0;j--){auto curr=q.front();q.pop();for(int k=0;k!=4;k++){int x=curr.first+directions[k][0];int y=curr.second+directions[k][1];if(x<0 || x>row-1 || y<0 || y>colum-1 || grid[x][y]==0) continue;if(grid[x][y]==1){grid[x][y]=2;count--;q.push({x,y});}}if(count==0) return time;}}return -1;}
};

本文发布于:2024-02-01 02:56:37,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170672739733372.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:广度   橘子
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23