zoukankan      html  css  js  c++  java
  • DFS例题:力扣695:岛屿的最大面积

    本题计算最大的岛屿面积,我们用dfs来深搜每个岛,并在每次dfs之前定义s来计算每个岛的面积,并同时更新最大值,我们将地图二维数组和每个点的x、y和s传入dfs函数,在第一个函数里的每一次dfs,就是一座新的岛屿

    在dfs中我们进行点的不合法判断且回溯,并修改遍历过的1改为0,然后将此岛屿面积s++,在dfs里的递归dfs调用是寻找同一座岛屿的相连感染部分。

     1 class Solution {
     2 public:
     3     int maxnum=0;
     4     int maxAreaOfIsland(vector<vector<int>>& grid) {
     5         if(grid.size()==0)
     6             return 0;
     7         for(int i=0;i<grid.size();i++){
     8             for(int j=0;j<grid[0].size();j++){
     9                 int s=0;//在dfs之前创建一个s来记录每个岛屿的面积
    10                 dfs(grid,i,j,s);//此函数里的每dfs一次,就是一个岛屿
    11                 maxnum=max(maxnum,s);//并更新最大值
    12             }
    13         }
    14         return maxnum;
    15     }
    16     void dfs(vector<vector<int>>& grid,int i,int j,int &s){
    17         if(i<0||j<0||i>=grid.size()||j>=grid[0].size()||grid[i][j]==0)  return ;//不合法判断并回溯
    18         grid[i][j]=0;//将遍历过的点化为0,且s++
    19         s++;
    20         //深搜“感染”区域,此处的深搜是寻找同一座岛的相连感染区域
    21         dfs(grid,i+1,j,s);
    22         dfs(grid,i-1,j,s);
    23         dfs(grid,i,j+1,s);
    24         dfs(grid,i,j-1,s);
    25         return;
    26     }
    27 };
  • 相关阅读:
    css 三种布局定位
    居中布局注意的要点
    CSS盒子3D模型
    SpringMVC中JSP取不到ModelAndView的数据原因
    如何让 height:100%; 起作用
    css形变
    消除html元素之间空白
    h5移动端网页头部标签模板
    大数据之Hadoop核心之HDFS
    大数据之Hadoop集群搭建
  • 原文地址:https://www.cnblogs.com/nilbook/p/13789420.html
Copyright © 2011-2022 走看看