• 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 };
  • 相关阅读:
    SQL SERVER 2012修改数据库名称(包括 db.mdf 名称的修改)
    vmware三种网络模式
    指针
    linux 中 开放端口,以及防火墙的相关命令
    数据库备份的脚本,记录下,还需优化下
    遍历 目录的几种有效办法
    转。git 乌龟的使用安装
    centos 时区正确,时间不对
    locate
    从 零开始 无差错 装好nginx+PHP
  • 原文地址:https://www.cnblogs.com/nilbook/p/13789420.html
Copyright © 2020-2023  润新知