994.腐烂的橘子——入门广度搜索

阅读: 评论:0

994.腐烂的橘子——入门广度搜索

994.腐烂的橘子——入门广度搜索

  • 广度搜索

    • 每到一个节点时,先遍历该节点能够到达的所有下一节点
    • 之后从下一层节点中的第一个节点开始,寻找它能到达的所有节点…直至结束
  • 在代码中表示为进队列和出队列的操作

int n = 10, m = 10;                   //地图宽高
void BFS()
{queue que;              //用队列来保存路口int graph[n][m];          //地图int px[] = {-1, 0, 1, 0};   //移动方向的数组int py[] = {0, -1, 0, 1};que.push(起点入队);      //将起点入队while (!pty()) {    //只要队列不为空auto temp = que.pop();          //得到队列中的元素for (int i = 0; i != 4; ++i) {if(//可以走) {//标记当前格子//将当前状态入队列,等待下次提取}}} 
}
  • 针对腐烂的橘子这题,也可以用广度搜索解决
  • 最初有多个橘子腐烂,把它们全部入队
static class Orange{int x;int y;public Orange(int x, int y){this.x = x;this.y = y;}}public static int orangesRotting(int[][] grid) {//两个数组组合起来完成下、右、上、左的移动int[] posx = {1, 0, -1, 0};int[] posy = new int[]{0, 1, 0, -1};int count = 0;int len1 = grid.length;int len2 = grid[0].length;Queue<Orange> queue = new LinkedList();//将数组腐烂的橘子全部入队for(int i = 0; i < len1; i++){for(int j = 0; j < len2; j++){if(grid[i][j] == 2){queue.offer(new Orange(i, j));}}}while(!queue.isEmpty()){//上一轮刚刚被污染的橘子的个数,用它们执行下一步的污染int size = queue.size();//用于判断每次是否有橘子被污染了,若这轮没有橘子被污染,天数就不加1boolean flag = false;//遍历每个刚被污染的橘子for(int i = 0; i < size; i++){Orange cur = queue.poll();//遍历当前腐烂橘子的四个方向for(int j = 0; j < 4; j++){if(cur.x + posx[j] < 0 || cur.x + posx[j] >= len1 ||cur.y + posy[j] < 0 || cur.y + posy[j] >= len2 ||grid[cur.x + posx[j]][cur.y + posy[j]] != 1)			{continue;}//有可以被污染的橘子flag = true;grid[cur.x + posx[j]][cur.y + posy[j]] = 2;queue.offer(new Orange(cur.x + posx[j], cur.y + posy[j]));}}if(flag){count ++;}}//判断是否存在还没被污染的橘子boolean done = true;for(int i = 0; i < len1; i++){for(int j = 0; j < len2; j++){if(grid[i][j] == 1){done = false;return -1;}}}return count;}

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

本文链接:https://www.4u4v.net/it/170672745633378.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