代码随想录算法训练营day51| 卡码网99.岛屿数量 卡码网100.岛屿的最大面积

news/2024/11/19 21:40:25/文章来源:https://www.cnblogs.com/tristan241001/p/18555642

学习资料:https://www.programmercarl.com/kamacoder/0099.岛屿的数量深搜.html#思路

深度优先搜索和广度优先搜索
今天用的邻接矩阵

学习记录:
卡码网99.岛屿数量 (深搜or广搜;用一个自己设计的二维矩阵来控制节点的移动方向:上下左右)

点击查看代码
from collections import deque
direction = [[1,0], [0,1], [-1,0], [0, -1]]  # 上,右,下,左def bfs(visited, grid, x, y):"""广搜"""que = deque([])que.append([x, y])while que:cur_x, cur_y = que.popleft()for i, j in direction:next_x = cur_x + inext_y = cur_y + jif next_x<0 or next_x>=len(grid) or next_y<0 or next_y>=len(grid[0]):continueif not visited[next_x][next_y] and grid[next_x][next_y] == 1:visited[next_x][next_y] = Trueque.append([next_x, next_y])def dfs(visited, grid, x, y):"""深搜"""for i, j in direction:next_x = x+inext_y = y + j# 下标越界,跳过 (这一小片区域的边界)if next_x<0 or next_x>=len(grid) or next_y<0 or next_y>=len(grid[0]):continue# 遇到为访问的陆地,标记并使用深搜if not visited[next_x][next_y] and grid[next_x][next_y]==1:visited[next_x][next_y] = Truedfs(visited, grid, next_x, next_y)if __name__ == "__main__":n, m = map(int, input().split())# 构造邻接矩阵grid = []for i in range(n):grid.append(list(map(int, input().split())))# 构造访问表,若以访问则为Truevisited = [[False]*m for _ in range(n)]# 岛屿数量res = 0for i in range(n):for j in range(m):# 如果当前是陆地,且未被访问过,说明找到了一片新的陆地,标记该访问情况,深搜找这片的范围if grid[i][j] == 1 and not visited[i][j]:res += 1visited[i][j] = Truebfs(visited, grid, i, j)   # dfs(visited, grid, i, j) 也可以print(res)

卡码网100.岛屿的最大面积(深搜法;给前面这道题的基础上,遍历每片岛屿时,要记录每个陆地值得到岛屿面积)

点击查看代码
directions = [[1,0],[0,1],[-1,0],[0,-1]]
count = 0def dfs(visited, grid, x, y):global count   # 设置全局变量for i,j in directions:cur_x = x + icur_y = y + jif cur_x<0 or cur_x>=len(grid) or cur_y<0 or cur_y>=len(grid[0]):continueif not visited[cur_x][cur_y] and grid[cur_x][cur_y]==1:visited[cur_x][cur_y] = Truecount += 1dfs(visited, grid, cur_x, cur_y)n, m = map(int, input().split())grid = []
for i in range(n):grid.append(list(map(int, input().split())))visited = [[False]*m for _ in range(n)]result = 0     # 记录count的最大值for i in range(n):for j in range(m):if grid[i][j]==1 and not visited[i][j]:count = 1visited[i][j] = Truedfs(visited, grid, i, j)result = max(result, count)print(result)

PS:不想学习的一天,想念卡哥视频的一天,啥时候出图论啊
学的比较潦草,多复习
好冷,今天吃了好多美食,豆花牛肉、大盘鸡、凉皮、羊肉抓饭、冰淇淋,嗝~
让我们一起倒数十个数!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/837013.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Vue UI创建项目问题

1.使用cmd命令行【Vue UI】创建项目出现【 Failed to get response from https://registry.npm.taobao.org/vue-cli-version-marker】 原因:镜像问题 处理:npm config get registry查看镜像源是【https://registry.npm.taobao.org/】 替换镜像源:(换成TX的,TaoBao的创建项…

基于Java+Springboot+Jpa+Mysql实现的在线网盘文件分享系统功能设计与实现二

今天发布的是一款由springboot+freemark+jpa+MySQL实现的在线网盘文件分享系统,其功能跟百度网盘非常类似,普通用户可以注册登录,注册后默认分配1G的空间大小,登录进去后可以新建文件夹、上传各种类型的文件、文件移动、复制、下载、删除、分享,分享分为私密分享和公开分享…

『模拟赛』多校A层冲刺NOIP2024模拟赛24

『模拟赛记录』多校A层冲刺NOIP2024模拟赛24Rank 。A. 选取字符串 签。 一眼想到动物园那个题面,kmp 求出的 next 数组实际上就是既是它的后缀又是它的前缀的字符串中(它本身除外),最长的长度。 那么可以想到,某个串除了它自身外,能选的 p/q 最长即为它的 next。更短的可…

osg三维场景中拾取鼠标在模型表面的点击点

osg三维场景中拾取鼠标在模型表面的点击点#include <osg/Group> #include <osg/Geode> #include <osg/ShapeDrawable> #include <osgDB/ReadFile> #include <osgViewer/Viewer> #include <osgGA/GUIEventHandler> #include <osgGA/Trac…

流和向量(Streams and Vectors)

在GNU Radio的官方教程中,提到了两个重要的块连接方式:流和向量(Streams and Vectors)。具体的章节链接为: 🔗:流和向量 - GNU Radio 🔗:带有向量的 Python 块 - GNU Radio 官方文档对流和向量的概念和使用有着简介和直观的讲述,但对于两者之间的转化方法以及何时使…

接口测试之fiddler(10.2)

一、fiddler包安装 路径也尽量不要有中文安装步骤:略 二、Fiddler 简介 fiddler 是 C# 开发免费web调试工具之一,记录所有客户端和服务端常见的 http 以及 https 请求,可监视设断点,甚至修改输入输出数据,它还包含了一个强大的基于事件脚本的子系统,并且能使用 .net 语言…

JDK21新增特性

顺序集合(Sequenced Collections)提供了几个新的接口,用于实现有序的集合。在没有提供有序集合操作之前,我们进行集合的序列操作一般如下First element Last elementList list.get(0) list.get(list.size() - 1)Deque deque.getFirst() deque.getLast()SortedSet sortedSet.f…

NOIP2024加赛6

让人家来打模拟赛,被吊打了吧。一签三计数,罚坐了。 草莓 简单贪心,随便贪就过了。点此查看代码 #include<bits/stdc++.h> using namespace std; #define rep(i,s,t,p) for(int i = s;i <= t;i += p) #define drep(i,s,t,p) for(int i = s;i >= t;i -= p) #ifde…

java小工具util系列5:java文件相关操作工具,包括读取服务器路径下文件,删除文件及子文件,删除文件夹等方法

java小工具util系列5:java文件相关操作工具,包括读取服务器路径下文件,删除文件及子文件,删除文件夹等方法@目录一、记录文件相关操作方法二、代码1.读取路径返回List<File>2.读取路径返回List<String>3.删除文件夹4.删除文件 一、记录文件相关操作方法 二、代…

一些再也不敢了的行为

前言:考完 CSP-S 2024 才总结出来的各种离谱错误。本文不讨论类似于在有环图上跑拓扑排序这种错误,直接说会见祖宗的行为。进入考场前检查好准考证和身份证等必要物品,笔者因为这个原因 \(2024\) 年联合省选被困在了门外。由于不是正式选手,最终被放了进去。如果当前电脑运…

什么是水鱼?三分钟教会你

"水鱼"是广西人最喜欢玩的酒桌游戏,它属于扑克牌的一种玩法,经过不断改良升级而来。如果你在广西不会水鱼,那喝酒就没有了灵魂。虽然广西名族很多,水鱼玩法不一样,但是同一个框架,内容不同而已。比如有些地方黑桃花色最大,有些地方红桃花色最大,这种一般玩2,…

Oracle Linux 9.5 正式版发布 - Oracle 提供支持 RHEL 兼容发行版

Oracle Linux 9.5 正式版发布 - Oracle 提供支持 RHEL 兼容发行版Oracle Linux 9.5 正式版发布 - Oracle 提供支持 RHEL 兼容发行版 Oracle Linux with Unbreakable Enterprise Kernel (UEK) & Red Hat compatible kernel (RHCK) 请访问原文链接:https://sysin.org/blog/o…