当前位置: 首页 > wzjs >正文

齐河网站建设费用网址查询站长工具

齐河网站建设费用,网址查询站长工具,什么网站做学校设计,品牌型网站制作给你一个由 1(陆地)和 0(水)组成的的二维网格,请你计算网格中岛屿的数量。 岛屿总是被水包围,并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。 此外,你可以假设该网格的四条边…

给你一个由 '1'(陆地)和 '0'(水)组成的的二维网格,请你计算网格中岛屿的数量。

岛屿总是被水包围,并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。

此外,你可以假设该网格的四条边均被水包围。

解题思路:

        // 类比二叉树的dfs方法; 递归检查左右子树

        // 将网格中的元素看作一个四叉的 就有四个((看作四个子树),不同在于会出现重复遍历兜圈子

        // 因此需要在每个格子元素遍历后将其加一个标志 true 表示遍历过,false 表示没有遍历

class Solution {
public:int numIslands(vector<vector<char>>& grid) {// 类比二叉树的dfs方法; 递归检查左右子树// 将网格中的元素看作一个四叉的 就有四个((看作四个子树),不同在于会出现重复遍历兜圈子// 因此需要在每个格子元素遍历后将其加一个标志 true 表示遍历过,false 表示没有遍历// 二叉树// dfs(treenode *root){// if (root == null) {//     return;// }// // 访问两个相邻结点:左子结点、右子结点// dfs(root.left);// dfs(root.right);// }// 网格深度优先遍历// void grid_dfs(vector<vector<char>>& grid,vector<vector<bool>>& grid_judg ,int r,int c){//     if(r > grid.size() || c > grid[0].size() || r<0 || c<0){ // 超出网格范围//         return; //     }//     //     if(grid_jude[r][c] || grid[r][c] !=1 ){ // 判断是否为遍历过的岛屿//         return; //     }//     grid_jude[r][c] = true;//     grid_dfs(grid,r-1,c); // 上面//     grid_dfs(grid,r+1,c); // 下面//     grid_dfs(grid,r,c-1); // 左面//     grid_dfs(grid,r,c+1); // 右面// }if (grid.empty() || grid[0].empty()) {return 0; // 如果网格为空,直接返回 0}int row = grid.size(), col = grid[0].size();int res = 0;vector<vector<bool>> grid_judg(row, vector<bool>(col, false)); // 保存是否遍历过for (int i = 0; i < row; i++) {for (int j = 0; j < col; j++) {if (grid[i][j] == '1' && !grid_judg[i][j]) {++res; // 发现一个新的岛屿grid_dfs(grid, grid_judg, i, j); // 递归标记整个岛屿}}}return res;}void grid_dfs(vector<vector<char>>& grid, vector<vector<bool>>& grid_judg, int r, int c) {// 边界条件检查if (r < 0 || r >= grid.size() || c < 0 || c >= grid[0].size()) {return; // 超出网格范围}// 如果当前格子是水或已经访问过,直接返回if (grid[r][c] != '1' || grid_judg[r][c]) {return;}// 标记当前格子为已访问grid_judg[r][c] = true;// 递归访问上下左右四个方向grid_dfs(grid, grid_judg, r - 1, c); // 上面grid_dfs(grid, grid_judg, r + 1, c); // 下面grid_dfs(grid, grid_judg, r, c - 1); // 左面grid_dfs(grid, grid_judg, r, c + 1); // 右面}
};

dfs:

将网格中的元素看作一个四叉的 就有四个((看作四个子树),不同在于会出现重复遍历兜圈子

因此需要在每个格子元素遍历后将其加一个标志 true 表示遍历过,false 表示没有遍历。

      void grid_dfs(vector<vector<char>>& grid,vector<vector<bool>>& grid_judg ,int r,int c){if(r > grid.size() || c > grid[0].size() || r<0 || c<0){ // 超出网格范围return; }if(grid_jude[r][c] || grid[r][c] !=1 ){ // 判断是否为遍历过的岛屿return; }grid_jude[r][c] = true;grid_dfs(grid,r-1,c); // 上面grid_dfs(grid,r+1,c); // 下面grid_dfs(grid,r,c-1); // 左面grid_dfs(grid,r,c+1); // 右面}
http://www.dtcms.com/wzjs/152019.html

相关文章:

  • 建设网站建设什么挣钱seo竞价
  • 网站域名 过期baidu优化
  • 网站模版可以修改吗seo优化自学
  • 浙江省建设建材工会网站湖南专业关键词优化
  • 个人备案做别的网站seo外包公司哪家专业
  • 广州荔湾做网站公搜索引擎排名优化建议
  • 做网站有什么框架莆田seo推广公司
  • h5建设网站网上有免费的网站吗
  • 网站怎么建设后台黄页网站推广服务
  • 临海房产中介网站如何制作如何推广普通话的建议6条
  • 劳务网站有做吗产品关键词大全
  • 南京 招网站开发线上销售平台有哪些
  • 国外b站推广网站推广软文范文800字
  • 福田公司是国企吗搜索引擎优化搜索优化
  • 上海金山网站设计公司成都网站快速排名
  • 电影网站怎么制作长春网站搭建
  • 网站建设方案书 个人网站网络销售这个工作到底怎么样
  • 新发布一个网站公告怎么做seo营销网站
  • 济宁网站建设服务著名的网络营销案例
  • 大型网站建设价格多少搜索引擎优化英文简称
  • 自己做的网站怎么挂网上解析域名网站
  • 河北省网站建设公司网络营销网站建设案例
  • 青岛做网站建设的公司广西seo
  • 江苏省建设工人考勤网站百度站长工具平台
  • 网站建设公司深圳关键词seo
  • 成都手机号码销售网站建设网站源码建站
  • 不用下载就能看的网站的浏览器国际新闻最新消息战争
  • 番禺网站制作多少钱我想在百度上做广告怎么做
  • 网站怎么做qq微信登陆界面设计湖北seo关键词排名优化软件
  • 当今做那些网站致富百度导航