网站免费源码大全无需下载公司在线注册

张小明 2026/1/10 17:49:02
网站免费源码大全无需下载,公司在线注册,wordpress标签页样式,网站制作软件手机思路#xff1a;1.网格问题#xff1a;网格问题是这样的一类搜索问题#xff1a;由mn个小方格组成一个网格#xff0c;每个小方格与其上下左右的四个方格被认为是相邻的#xff0c;要在这样的网格上进行某种搜索。这种题目用DFS实现会非常简单。2.如何构造方格类DFS的代码…思路1.网格问题网格问题是这样的一类搜索问题由m×n个小方格组成一个网格每个小方格与其上下左右的四个方格被认为是相邻的要在这样的网格上进行某种搜索。这种题目用DFS实现会非常简单。2.如何构造方格类DFS的代码1首先每个方格与其上下左右的四个方格相邻则DFS每次要分出四个岔。// 基本的 DFS 框架每次搜索四个相邻方格 void dfs(int[][] grid, int r, int c) { dfs(grid, r - 1, c); // 上边相邻 dfs(grid, r 1, c); // 下边相邻 dfs(grid, r, c - 1); // 左边相邻 dfs(grid, r, c 1); // 右边相邻 }2但是对于网格边缘的方格上下左右并不都有邻居。思路一在递归调用之前判断方格的位置例如位于左边缘则不访问其左邻居。但这样一个一个判断写起来会比较麻烦。×思路二采用“先污染后治理”的思路先做递归调用再在每个DFS函数的开头判断其是否合法不合法的直接返回。同样还需要判断该方格是否有岛屿值是否为1否则也需要返回。√// 处理方格位于网格边缘的情况 void dfs(int[][] grid, int r, int c) { // 若坐标不合法直接返回 if (!(0 r r grid.length 0 c c grid[0].length)) { return; } // 若该方格不是岛屿直接返回 if (grid[r][c] ! 1) { return; } dfs(grid, r - 1, c); dfs(grid, r 1, c); dfs(grid, r, c - 1); dfs(grid, r, c 1); }3但这样还有一个问题那就是DFS可能会不停地兜圈子永远停不下来如下图所示。4那么我们需要标记遍历过的方格保证方格不进行重复遍历。标记遍历过的方格并不需要使用额外空间只需要改变方格中存储的值就可以。在这道题中值为0表示非岛屿不可遍历值为1表示岛屿可遍历可以用2表示已经遍历过的岛屿。5这样就得到了网格DFS遍历的框架代码。// 标记已遍历过的岛屿不做重复遍历 void dfs(int[][] grid, int r, int c) { if (!(0 r r grid.length 0 c c grid[0].length)) { return; } // 已遍历过值为2的岛屿在这里会直接返回不会重复遍历 if (grid[r][c] ! 1) { return; } grid[r][c] 2; // 将方格标记为已遍历 dfs(grid, r - 1, c); dfs(grid, r 1, c); dfs(grid, r, c - 1); dfs(grid, r, c 1); }6如何在DFS遍历时求岛屿的周长求岛屿周长的方法很多如果用DFS遍历来求的话有一种很简单的思路那就是岛屿的周长就是岛屿方格和非岛屿方格相邻的边的数量。这里的非岛屿方格既包括水域也包括网格的边界如下图所示。将这个相邻关系对应到DFS遍历中就是每当在DFS遍历中从一个岛屿走向一个非岛屿方格就将周长 1。代码如下所示。int dfs(int[][] grid, int r, int c) { // 从一个岛屿方格走向网格边界周长加 1 if (!(0 r r grid.length 0 c c grid[0].length)) { return 1; } // 从一个岛屿方格走向水域方格周长加 1 if (grid[r][c] 0) { return 1; } if (grid[r][c] ! 1) { return 0; } grid[r][c] 2; return dfs(grid, r - 1, c) dfs(grid, r 1, c) dfs(grid, r, c - 1) dfs(grid, r, c 1); }附代码class Solution { public int islandPerimeter(int[][] grid) { for(int r 0;r grid.length;r){ for(int c 0;c grid[0].length;c){ if(grid[r][c] 1){ //题目限制只有一个岛屿计算一个即可 return dfs(grid,r,c); } } } return 0; } int dfs(int[][] grid,int r,int c){ //先污染后治理只需要在开头判断是否合法若不合法则直接返回 //从一个岛屿方格走向网格边界周长加1 if(!(r 0 r grid.length c 0 c grid[0].length)){ return 1; } //从一个岛屿方格走向水域方格周长加1 if(grid[r][c] 0){ return 1; } //已经遍历过直接返回避免重复遍历 if(grid[r][c] 2){ return 0; } //将本方格标记为已经遍历过 grid[r][c] 2; //探索相邻格子并将四个方向的周长计算结果相加 return dfs(grid,r - 1,c) dfs(grid,r 1,c) dfs(grid,r,c - 1) dfs(grid,r,c 1); } }
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

建设淘宝网站的目的导航网站织梦模板

ABCJS音乐渲染库:从零到精通的网页乐谱制作全攻略 【免费下载链接】abcjs javascript for rendering abc music notation 项目地址: https://gitcode.com/gh_mirrors/ab/abcjs 想要在网页上轻松展示专业音乐乐谱吗?ABCJS正是你需要的解决方案&…

张小明 2026/1/8 6:51:03 网站建设

移动网站开发服务自己制作的网页怎么发布

导语 【免费下载链接】Hunyuan3D-Omni 腾讯混元3D-Omni:3D版ControlNet突破多模态控制,实现高精度3D资产生成 项目地址: https://ai.gitcode.com/tencent_hunyuan/Hunyuan3D-Omni 腾讯正式开源业界首个统一支持点云、体素、边界框和骨骼四模态控制…

张小明 2026/1/7 2:58:40 网站建设

视频网站免费送会员怎么做人才招聘网站怎么做

《需求收集与记录:从用户故事到交付成果的全面指南》 用户故事与验收标准 在软件开发中,用户故事是描述用户需求的有效方式,而验收标准则为这些需求提供了具体的验证规则。例如,在处理位置名称时,有两条验收标准:一是若默认位置名称不合心意,应能手动覆盖;二是覆盖后…

张小明 2026/1/7 2:57:04 网站建设

网站后台源代码更改专业做装修设计的网站

【开源利器】条码字体完全攻略:零成本打造专业条码系统 【免费下载链接】librebarcode Libre Barcode: barcode fonts for various barcode standards. 项目地址: https://gitcode.com/gh_mirrors/li/librebarcode 想要免费生成专业级条码?条码字…

张小明 2026/1/8 5:19:44 网站建设

建湖做网站价格厦门邮件网站

前言 在使用 Elasticsearch 进行混合检索(Hybrid Search)时,理解文档得分的计算过程至关重要。特别是当结合向量检索(KNN)和传统文本检索(Query String)时,分数计算会变得更加复杂。本文将通过一个真实的查询案例,深入解析 ES 的 explain API 用法,以及混合查询场景…

张小明 2026/1/7 2:56:01 网站建设

做搜索引擎的网站西安网站架设公司

12月30日下午,河南省高成长性科技型领军企业(企业家)颁奖大会在郑州黄河迎宾馆举办。本次大会以“豫见新质 科创未来”为主题,旨在发掘表彰科技型标杆企业与领军人才,凝聚创新发展共识,助力河南打造国家创新…

张小明 2026/1/8 11:29:19 网站建设