网加速器南昌seo技术外包

张小明 2026/1/15 21:42:28
网加速器,南昌seo技术外包,济南网站设计公司,国外免费建站网站不用下载孤岛计数 深搜版文章讲解/视频讲解 广搜版文章讲解/视频讲解 题目描述#xff1a; 给定一个由 1#xff08;陆地#xff09;和 0#xff08;水#xff09;组成的矩阵#xff0c;你需要计算岛屿的数量。岛屿由水平方向或垂直方向上相邻的陆地连接而成#xff0c;并且…孤岛计数深搜版文章讲解/视频讲解广搜版文章讲解/视频讲解题目描述给定一个由 1陆地和 0水组成的矩阵你需要计算岛屿的数量。岛屿由水平方向或垂直方向上相邻的陆地连接而成并且四周都是水域。你可以假设矩阵外均被水包围。输入描述第一行包含两个整数 N, M表示矩阵的行数和列数。后续 N 行每行包含 M 个数字数字为 1 或者 0。输出描述输出一个整数表示岛屿的数量。如果不存在岛屿则输出 0。输入示例4 5 1 1 0 0 0 1 1 0 0 0 0 0 1 0 0 0 0 0 1 1输出示例3提示信息根据测试案例中所展示岛屿数量共有 3 个所以输出 3。数据范围1 N, M 50思路本题中的每座岛屿都只能由水平方向和/或竖直方向上相邻的陆地连接形成也就是说斜角度的连接是不算数的如图这是三个岛屿那么思路就是遇到一个没有遍历过的节点陆地就让计数器加一然后把节点陆地所能遍历到的陆地全部标记上。如果遇到了标记过的陆地节点和海洋节点就直接跳过这样计数器就是最终岛屿的数量所以我们本题标记所有陆地节点能遍历到的陆地的方式就可以选择dfs和bfs了。dfs代码示例const r1 require(readline).createInterface({ input: process.stdin }); // 创建readline接口 let iter r1[Symbol.asyncIterator](); // 创建异步迭代器 const readline async () (await iter.next()).value; let graph let N, M let visited let result 0 const dir [[0, 1], [1, 0], [0, -1], [-1, 0]] // 读取输入初始化地图 const initGraph async () { let line await readline(); [N, M] line.split( ).map(Number); graph new Array(N).fill(0).map(() new Array(M).fill(0)) visited new Array(N).fill(false).map(() new Array(M).fill(false)) for (let i 0; i N; i) { line await readline() line line.split( ).map(Number) for (let j 0; j M; j) { graph[i][j] line[j] } } } /** * description: 从节点x,y开始深度优先遍历 * param {*} graph 是地图也就是一个二维数组 * param {*} visited 标记访问过的节点不要重复访问 * param {*} x 表示开始搜索节点的下标 * param {*} y 表示开始搜索节点的下标 * return {*} */ const dfs (graph, visited, x, y) { for (let i 0; i 4; i) { const nextx x dir[i][0] const nexty y dir[i][1] if (nextx 0 || nextx N || nexty 0 || nexty M) continue if (!visited[nextx][nexty] graph[nextx][nexty] 1) { visited[nextx][nexty] true dfs(graph, visited, nextx, nexty) } } } (async function () { // 读取输入初始化地图 await initGraph() // 统计岛屿数 for (let i 0; i N; i) { for (let j 0; j M; j) { if (!visited[i][j] graph[i][j] 1) { // 标记已访问 visited[i][j] true // 遇到没访问过的陆地1 result // 深度优先遍历将相邻陆地标记为已访问 dfs(graph, visited, i, j) } } } console.log(result); })()bfs有一个值得注意的点只要是加入队列就代表走过了就需要标记而不是从队列拿出来的时候再去标记走过如果从队列拿出结点再标记就会出现以下情况导致节点重复加入队列bfs代码示例const r1 require(readline).createInterface({ input: process.stdin }); // 创建readline接口 let iter r1[Symbol.asyncIterator](); // 创建异步迭代器 const readline async () (await iter.next()).value; let graph let N, M let visited let result 0 const dir [[0, 1], [1, 0], [0, -1], [-1, 0]] // 读取输入初始化地图 const initGraph async () { let line await readline(); [N, M] line.split( ).map(Number); graph new Array(N).fill(0).map(() new Array(M).fill(0)) visited new Array(N).fill(false).map(() new Array(M).fill(false)) for (let i 0; i N; i) { line await readline() line line.split( ).map(Number) for (let j 0; j M; j) { graph[i][j] line[j] } } } /** * description: 从(x, y)开始广度优先遍历 * param {*} graph 地图 * param {*} visited 访问过的节点 * param {*} x 开始搜索节点的下标 * param {*} y 开始搜索节点的下标 * return {*} */ const bfs (graph, visited, x, y) { let queue [] queue.push([x, y]) visited[x][y] true //只要加入队列就立刻标记为访问过 while (queue.length) { let [x, y] queue.shift() for (let i 0; i 4; i) { let nextx x dir[i][0] let nexty y dir[i][1] if(nextx 0 || nextx N || nexty 0 || nexty M) continue if(!visited[nextx][nexty] graph[nextx][nexty] 1){ queue.push([nextx, nexty]) visited[nextx][nexty] true } } } } (async function () { // 读取输入初始化地图 await initGraph() // 统计岛屿数 for (let i 0; i N; i) { for (let j 0; j M; j) { if (!visited[i][j] graph[i][j] 1) { // 遇到没访问过的陆地1 result // 广度优先遍历将相邻陆地标记为已访问 bfs(graph, visited, i, j) } } } console.log(result); })()最大岛屿的面积文章讲解/视频讲解题目描述给定一个由 1陆地和 0水组成的矩阵计算岛屿的最大面积。岛屿面积的计算方式为组成岛屿的陆地的总数。岛屿由水平方向或垂直方向上相邻的陆地连接而成并且四周都是水域。你可以假设矩阵外均被水包围。输入描述第一行包含两个整数 N, M表示矩阵的行数和列数。后续 N 行每行包含 M 个数字数字为 1 或者 0表示岛屿的单元格。输出描述输出一个整数表示岛屿的最大面积。如果不存在岛屿则输出 0。输入示例4 5 1 1 0 0 0 1 1 0 0 0 0 0 1 0 0 0 0 0 1 1输出示例4提示信息样例输入中岛屿的最大面积为 4。数据范围1 M, N 50。思路本题还是dfs与bfs的基础类题目就是去搜索每个岛屿上‘1’的数量然后取一个最大的dfs两种写法要么dfs处理当前节点的相邻节点即主函数遇到岛屿就计数为1由dfs来处理接下来的相邻陆地。还有一种写法是dfs处理当前节点即主函数遇到岛屿计数为0dfs处理的是接下来全部的陆地这里我是用解法一const r1 require(readline).createInterface({ input: process.stdin }); // 创建readline接口 let iter r1[Symbol.asyncIterator](); // 创建异步迭代器 const readline async () (await iter.next()).value; let graph // 地图 let N, M // 地图大小 let visited // 访问过的节点 let result 0 // 最大岛屿面积 let count 0 // 岛屿内节点数 const dir [[0, 1], [1, 0], [0, -1], [-1, 0]] //方向 // 读取输入初始化地图 const initGraph async () { let line await readline(); [N, M] line.split( ).map(Number); graph new Array(N).fill(0).map(() new Array(M).fill(0)) visited new Array(N).fill(false).map(() new Array(M).fill(false)) for (let i 0; i N; i) { line await readline() line line.split( ).map(Number) for (let j 0; j M; j) { graph[i][j] line[j] } } } /** * description: 从(x, y)开始深度优先遍历 * param {*} graph 地图 * param {*} visited 访问过的节点 * param {*} x 开始搜索节点的下标 * param {*} y 开始搜索节点的下标 * return {*} */ const dfs (graph, visited, x, y) { for (let i 0; i 4; i) { let nextx x dir[i][0] let nexty y dir[i][1] if(nextx 0 || nextx N || nexty 0 || nexty M) continue if(!visited[nextx][nexty] graph[nextx][nexty] 1){ count visited[nextx][nexty] true dfs(graph, visited, nextx, nexty) } } } (async function () { // 读取输入初始化地图 await initGraph() // 统计最大岛屿面积 for (let i 0; i N; i) { for (let j 0; j M; j) { if (!visited[i][j] graph[i][j] 1) { //遇到没有访问过的陆地 // 重新计算面积 count 1 visited[i][j] true // 深度优先遍历统计岛屿内节点数并将岛屿标记为已访问 dfs(graph, visited, i, j) // 更新最大岛屿面积 result Math.max(result, count) } } } console.log(result); })()bfs就直接一种写法const r1 require(readline).createInterface({ input: process.stdin }); // 创建readline接口 let iter r1[Symbol.asyncIterator](); // 创建异步迭代器 const readline async () (await iter.next()).value; let graph // 地图 let N, M // 地图大小 let visited // 访问过的节点 let result 0 // 最大岛屿面积 let count 0 // 岛屿内节点数 const dir [[0, 1], [1, 0], [0, -1], [-1, 0]] //方向 // 读取输入初始化地图 const initGraph async () { let line await readline(); [N, M] line.split( ).map(Number); graph new Array(N).fill(0).map(() new Array(M).fill(0)) visited new Array(N).fill(false).map(() new Array(M).fill(false)) for (let i 0; i N; i) { line await readline() line line.split( ).map(Number) for (let j 0; j M; j) { graph[i][j] line[j] } } } /** * description: 从(x, y)开始广度优先遍历 * param {*} graph 地图 * param {*} visited 访问过的节点 * param {*} x 开始搜索节点的下标 * param {*} y 开始搜索节点的下标 * return {*} */ const bfs (graph, visited, x, y) { let queue [] queue.push([x, y]) count visited[x][y] true //只要加入队列就立刻标记为访问过 while (queue.length) { let [xx, yy] queue.shift() for (let i 0; i 4; i) { let nextx xx dir[i][0] let nexty yy dir[i][1] if(nextx 0 || nextx N || nexty 0 || nexty M) continue if(!visited[nextx][nexty] graph[nextx][nexty] 1){ queue.push([nextx, nexty]) count visited[nextx][nexty] true } } } } (async function () { // 读取输入初始化地图 await initGraph() // 统计最大岛屿面积 for (let i 0; i N; i) { for (let j 0; j M; j) { if (!visited[i][j] graph[i][j] 1) { //遇到没有访问过的陆地 // 重新计算面积 count 0 // 广度优先遍历统计岛屿内节点数并将岛屿标记为已访问 bfs(graph, visited, i, j) // 更新最大岛屿面积 result Math.max(result, count) } } } console.log(result); })()这些题都是思路比较简单难点都在dfs和bfs的理论基础上
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

上传下载文件网站开发的php源码百度影响力排名顺序

CPU智能调度技术革命性深度解析:突破传统性能瓶颈 【免费下载链接】CPUDoc 项目地址: https://gitcode.com/gh_mirrors/cp/CPUDoc 现代计算机系统中,CPU性能浪费已成为影响用户体验的关键瓶颈。传统操作系统调度策略在多核处理器架构下存在严重缺…

张小明 2026/1/9 6:20:58 网站建设

微信微网站是什么格式wordpress访问不了

CSS Grid布局详解CSS Grid布局是CSS中最强大的布局系统,它是一个二维布局系统,可以同时处理行和列,非常适合创建复杂的网页布局。一、Grid基本概念1.1 容器和项目Grid容器:使用display: grid或display: inline-grid的元素Grid项目…

张小明 2026/1/9 6:20:56 网站建设

上海专业高端网站建设服务ppt制作最常用软件

Vehicle Data Reconstructor(VDR)车辆数据重构器是专为执法机构设计的解决方案,能够从现代车辆系统中提取、解析并呈现数据。它支持众多制造商的信息娱乐主机与远程信息处理模块,生成清晰、可操作的调查报告。本文将从以下方面介绍…

张小明 2026/1/9 6:20:53 网站建设

wordpress 搭建多站点网站备案需要提交什么资料

界面化训练操作演示:拖拽式完成SFT全过程 在大模型技术飞速发展的今天,越来越多的企业和开发者希望快速定制专属的AI能力——比如让一个通用语言模型学会回答金融问题、生成法律文书,或者理解医疗术语。但现实是,大多数团队卡在了…

张小明 2026/1/9 6:20:51 网站建设

虚拟主机只能静态网站做滋补品销售有什么网站

在内容创作日新月异的今天,你是否曾为静态MP4资源的局限性而困扰?YYEVA动态MP4动效播放器应运而生,彻底打破了传统视频资源的束缚,让MP4文件能够实时插入动态元素,为你的创意提供无限可能。 【免费下载链接】YYEVA YYE…

张小明 2026/1/13 2:24:12 网站建设

从哪里找网站建设一个网站需要什么设备

文章目录系统截图项目技术简介可行性分析主要运用技术介绍核心代码参考示例结论源码lw获取/同行可拿货,招校园代理 :文章底部获取博主联系方式!系统截图 python-flask-djangoBS_rsrei73 架构的小区物业管理系统设计与实现基于 项目技术简介 Python…

张小明 2026/1/9 8:58:35 网站建设