当前位置: 首页 > 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/422996.html

相关文章:

  • 携程网站建设进度及实施过程2022年新闻摘抄简短
  • 深圳市网站建设公司排名seo推广专员工作内容
  • dw是做网站的软件吗网站链接提交收录
  • 阿里云服务器责任怎么做网站百度地图的精准定位功能
  • 广东网站建设服务seo在线优化排名
  • cgi做网站接外包网站
  • 石家庄哪里有网站建设河北seo网络优化师
  • 营销网站建站公司哪家好教育机构排名
  • 产品众筹网站开发东莞seo外包平台
  • 悦然wordpress建站服务营销策划公司是干什么的
  • 优秀网站设计推荐爱站网站排行榜
  • 深圳创业补贴seo整合营销
  • 舞蹈培训网站模板seo优化文章网站
  • 自己怎么做外贸批发网站app推广平台排行榜
  • 企业建设网站公司名称大全泰安seo公司
  • 东莞大朗网站建设深圳网络推广公司有哪些
  • wordpress建站数据库站长统计网站
  • 玛酷机器人少儿编程加盟怎么优化电脑系统
  • 深圳云网站建站公司广州网页定制多少钱
  • wordpress如何查看并修改源代码sem推广优化
  • 在建设局网站备案怎么弄百度站长工具怎么用
  • java软件开发培训平台百度ocpc怎么优化
  • 安庆商城网站开发公司营销策划方案
  • 北京做网站哪家便宜市场营销一般在哪上班
  • 专业做简历的网站新手怎么入行sem
  • 网站banner怎么做的世界足球排名最新
  • 网站建设 网络推广网络推广和运营的区别
  • 在床上做很黄很暴力网站互联网推广有哪些方式
  • 广东中山市做网站网站推广系统方案
  • 微信小程序注册后怎么登录seosem是什么职位