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

代码随想录算法训练营DAY58|101.孤岛的总面积、102.沉没孤岛、103. 水流问题、104.建造最大岛屿

忙。。。写了好久。。。。慢慢补吧。

101.孤岛的总面积

  • 先把周边的岛屿变成水
  • dfs
def dfs(x, y, graph, s):if x<0 or x>=len(graph) or y<0 or y>=len(graph[0]) or graph[x][y]==0:return sgraph[x][y]=0s+=1s = dfs(x+1, y, graph, s)s = dfs(x-1, y, graph, s)s = dfs(x, y+1, graph, s)s = dfs(x, y-1, graph, s)return sif __name__=='__main__':n,m = map(int,input().split())graph=[]for i in range(n):row = list(map(int, input().split()))graph.append(row)for i in range(n):if graph[i][0]==1:dfs(i,0,graph,0)if graph[i][m-1]==1:dfs(i,m-1,graph,0)for j in range(m):if graph[0][j]==1:dfs(0,j,graph,0)if graph[n-1][j]==1:dfs(n-1,j,graph,0)s_t = 0for x in range(n):for y in range(m):if graph[x][y]==1:s=dfs(x,y,graph,0)s_t+=sprint(s_t)

102.沉没孤岛

from collections import dequedef bfs(x, y, graph):graph[x][y]=2que = deque([[x,y]])while que:x, y = que.popleft()directions = [[0,1],[0,-1],[1,0],[-1,0]]for k in range(4):x0, y0 = directions[k]new_x = x+x0new_y = y+y0if new_x>=0 and new_x<len(graph) and new_y>=0 and new_y<len(graph[0]) and graph[new_x][new_y]==1:que.append([new_x, new_y])graph[new_x][new_y]=2return     if __name__=='__main__':n,m = map(int,input().split())graph=[]for _ in range(n):row = list(map(int, input().split()))graph.append(row)    for i in range(n):if graph[i][0]==1:bfs(i,0,graph)if graph[i][m-1]==1:bfs(i,m-1,graph)for j in range(m):if graph[0][j]==1:bfs(0,j,graph)if graph[n-1][j]==1:bfs(n-1,j,graph)for x in range(n):for y in range(m):if graph[x][y]==2:graph[x][y]=1elif graph[x][y]==1:graph[x][y]=0for a in range(n):for b in range(m):print(str(graph[a][b])+' ',end = '')print()

103. 水流问题

  • 注意是从边界逆流而上,判断条件应该是graph[x][y]<=graph[new_x][new_y]:
def dfs(x,y,graph,bordermatrix):if bordermatrix[x][y]:returnbordermatrix[x][y]=1directions=[[0,1],[0,-1],[1,0],[-1,0]]for i in range(4):x0,y0=directions[i]new_x = x+x0new_y = y+y0if new_x<0 or new_x>=len(graph) or new_y<0 or new_y>=len(graph[0]):continueif graph[x][y]<=graph[new_x][new_y]:dfs(new_x,new_y,graph,bordermatrix)return if __name__=='__main__':n,m=map(int, input().split())graph=[]for _ in range(n):row = list(map(int, input().split()))graph.append(row)firstborder=[[0]*m for i in range(n)]secondborder=[[0]*m for i in range(n)]for i in range(n):dfs(i,0,graph,firstborder)dfs(i,m-1,graph,secondborder)for j in range(m):dfs(0,j,graph,firstborder)dfs(n-1,j,graph,secondborder)for k in range(n):for l in range(m):if firstborder[k][l] and secondborder[k][l]:print('{} {}'.format(str(k),str(l)))

104.建造最大岛屿

def dfs(x,y,graph,visited,mark,s):directions=[[0,1],[0,-1],[1,0],[-1,0]]if visited[x][y] or not graph[x][y]:return  svisited[x][y]=Truegraph[x][y]=marks+=1for i in range(4):x0,y0=directions[i]new_x = x+x0new_y = y+y0if new_x<0 or new_x>=len(graph) or new_y<0 or new_y>=len(graph[0]):continues = dfs(new_x,new_y,graph,visited,mark,s)return sif __name__=='__main__':n,m = map(int, input().split())graph = []for i in range(n):row = list(map(int, input().split()))graph.append(row)isallgrid=Truevisited=[[False]*m for i in range(n)]islands={}islands[0]=0idx=1for j in range(n):for k in range(m):if graph[j][k]==1:s = dfs(j,k,graph,visited,idx,0)islands[idx]=sidx+=1else:isallgrid=Falseif isallgrid:print(m*n)else:result = 0for j in range(n):for k in range(m):count = 1visitedgraph=[]if graph[j][k]==0:directions=[[0,1],[0,-1],[1,0],[-1,0]]for l in range(4):j0,k0 = directions[l]new_j = j+j0new_k = k+k0if new_j<0 or new_j>=len(graph) or new_k<0 or new_k>=len(graph[0]):continueif graph[new_j][new_k] in visitedgraph: continuecount+=islands[graph[new_j][new_k]]visitedgraph.append(graph[new_j][new_k])result = max(result, count)print(result)

相关文章:

代码随想录算法训练营DAY58|101.孤岛的总面积、102.沉没孤岛、103. 水流问题、104.建造最大岛屿

忙。。。写了好久。。。。慢慢补吧。 101.孤岛的总面积 先把周边的岛屿变成水dfs def dfs(x, y, graph, s):if x<0 or x>len(graph) or y<0 or y>len(graph[0]) or graph[x][y]0:return sgraph[x][y]0s1s dfs(x1, y, graph, s)s dfs(x-1, y, graph, s)s dfs(…...

韦尔股份:深蹲起跳?

利润大增7倍&#xff0c;是反转信号还是回光返照&#xff1f; 今天我们聊聊光学半导体龙头——韦尔股份。 上周末&#xff0c;韦尔股份发布半年业绩预告&#xff0c;预计上半年净利润13至14亿&#xff0c;同比增幅高达 754%至 819%。 然而&#xff0c;回首 2023 年它的净利仅 …...

docs | 使用 sphinx 转化rst文件为html文档

1. 效果图 book 风格。 优点&#xff1a; 极简风格右边有标题导航左侧是文件导航&#xff0c;可隐藏 2. 使用方式 reST 格式&#xff0c;比markdown格式更复杂。 推荐使用 book 风格。 文档构建工具是 sphinx&#xff0c;是一个python包。 $ pip3 list | grep -i Sphinx …...

【ChatGPT 消费者偏好】第二弹:ChatGPT在日常生活中的使用—推文分享—2024-07-10

今天的推文主题还是【ChatGPT & 消费者偏好】 第一篇&#xff1a;哪些动机因素和技术特征的组合能够导致ChatGPT用户中高和低的持续使用意图。第二篇&#xff1a;用户对ChatGPT的互动性、性能期望、努力期望以及社会影响如何影响他们继续使用这些大型语言模型的意向&#x…...

Webpack配置及工作流程

Webpack是一个现代JavaScript应用程序的静态模块打包器&#xff08;module bundler&#xff09;。当Webpack处理应用程序时&#xff0c;它会在内部构建一个依赖图&#xff08;dependency graph&#xff09;&#xff0c;该图会映射项目所需的每个模块&#xff0c;并生成一个或多…...

华为ensp实现防火墙的区域管理与用户认证

实验环境 基于该总公司内网&#xff0c;实现图片所在要求 后文配置请以本图为准 接口配置与网卡配置 1、创建vlan 2、防火墙g0/0/0与云页面登录 登录admin,密码Admin123&#xff0c;自行更改新密码 更改g0/0/0口ip&#xff0c;敲下命令service-manage all permit 网卡配置…...

深入解析 Laravel 策略路由:提高应用安全性与灵活性的利器

引言 Laravel 是一个功能强大的 PHP Web 应用框架&#xff0c;以其优雅和简洁的语法而受到开发者的喜爱。在 Laravel 中&#xff0c;路由是应用中非常重要的一部分&#xff0c;它负责将用户的请求映射到相应的控制器方法上。Laravel 提供了多种路由方式&#xff0c;其中策略路…...

Java | Leetcode Java题解之第228题汇总区间

题目&#xff1a; 题解&#xff1a; class Solution {public List<String> summaryRanges(int[] nums) {List<String> ans new ArrayList<>();for (int i 0, j, n nums.length; i < n; i j 1) {j i;while (j 1 < n && nums[j 1] num…...

使用Simulink基于模型设计(三):建模并验证系统

可以对系统结构中的每个组件进行建模&#xff0c;以表示该组件的物理行为或功能行为。通过使用测试数据对组件进行仿真&#xff0c;以验证它们的基本行为。 打开系统布局 对各个组件进行建模时&#xff0c;需要从大局上把握整个系统布局。首先加载布局模型。这里以simulink自…...

基于go 1.19的站点模板爬虫

好像就三步: 1 建立http连接 2 解析html内容 3 递归遍历 创建一个基于 Go 1.19 的网站模板爬虫主要涉及几个步骤&#xff0c;包括设置 HTTP 客户端来获取网页内容、解析 HTML 来提取所需的数据&#xff0c;以及处理可能的并发和错误。下面我会给出一个简单的例子来说明如何…...

0基础学会在亚马逊云科技AWS上搭建生成式AI云原生Serverless问答QA机器人(含代码和步骤)

小李哥今天带大家继续学习在国际主流云计算平台亚马逊云科技AWS上开发生成式AI软件应用方案。上一篇文章我们为大家介绍了&#xff0c;如何在亚马逊云科技上利用Amazon SageMaker搭建、部署和测试开源模型Llama 7B。下面我将会带大家探索如何搭建高扩展性、高可用的完全托管云原…...

[PaddlePaddle飞桨] PaddleOCR图像小模型部署

PaddleOCR的GitHub项目地址 推荐环境&#xff1a; PaddlePaddle > 2.1.2 Python > 3.7 CUDA > 10.1 CUDNN > 7.6pip下载指令&#xff1a; python -m pip install paddlepaddle-gpu2.5.1 -i https://pypi.tuna.tsinghua.edu.cn/simple pip install paddleocr2.7…...

C语言 | Leetcode C语言题解之第227题基本计算题II

题目&#xff1a; 题解&#xff1a; int calculate(char* s) {int n strlen(s);int stk[n], top 0;char preSign ;int num 0;for (int i 0; i < n; i) {if (isdigit(s[i])) {num num * 10 (int)(s[i] - 0);}if (!isdigit(s[i]) && s[i] ! || i n - 1) {s…...

kafka.common.KafkaException: Socket server failed to bind to xx:9092

部署分布式集群的时候遇到的错误。 解决方案: 修改config下的server.properties,添加 listenersPLAINTEXT://:9092 advertised.listenersPLAINTEXT://自己的服务器ip:9092 然后重新启动&#xff0c;检查进程是否存在ps -aux | grep kafka。 成功启动。...

【JS+H5+CSS实现烟花特效】

话不多说直接上代码 注意:背景图路径是picture/star.jpg&#xff0c;自己在同级目录先创键picture目录再下载一张图片命名为star.jpg HTML: <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"vi…...

uniapp小程序使用webview 嵌套 vue 项目

uniapp小程序使用webview 嵌套 vue 项目 小程序中发送 <web-view :src"urlSrc" message"handleMessage"></web-view>export default {data() {return {urlSrc: "",};},onLoad(options) {// 我需要的参数比较多 所以比较臃肿// 获取…...

命令模式在金融业务中的应用及其框架实现

引言 命令模式(Command Pattern)是一种行为设计模式,它将一个请求封装为一个对象,从而使你可以用不同的请求对客户进行参数化,并且支持请求的排队和撤销操作。在金融业务中,命令模式可以用于实现交易请求、撤销操作等功能。本文将介绍命令模式在金融业务中的使用,并探讨…...

WordPress的性能优化有哪些方法?

WordPress的性能优化方法主要包括以下几个方面&#xff1a; 1. 使用缓存插件&#xff1a;缓存插件可以降低服务器负载&#xff0c;提高网站加载速度。常用的缓存插件有WP Rocket、WP Fastest Cache和Cache Enabler等。 2. 代码压缩和整合&#xff1a;通过压缩JavaScript、CSS…...

【Python基础】代码如何打包成exe可执行文件

本文收录于 《一起学Python趣味编程》专栏&#xff0c;从零基础开始&#xff0c;分享一些Python编程知识&#xff0c;欢迎关注&#xff0c;谢谢&#xff01; 文章目录 一、前言二、安装PyInstaller三、使用PyInstaller打包四、验证打包是否成功五、总结 一、前言 本文介绍如何…...

Golang | Leetcode Golang题解之第227题基本计算器II

题目&#xff1a; 题解&#xff1a; func calculate(s string) (ans int) {stack : []int{}preSign : num : 0for i, ch : range s {isDigit : 0 < ch && ch < 9if isDigit {num num*10 int(ch-0)}if !isDigit && ch ! || i len(s)-1 {switch preS…...

SAM3问题解决:分割不准?试试调整检测阈值和提示词

SAM3问题解决&#xff1a;分割不准&#xff1f;试试调整检测阈值和提示词 1. 问题现象与原因分析 1.1 常见分割问题表现 在使用SAM3进行图像分割时&#xff0c;用户可能会遇到以下几种典型问题&#xff1a; 过度分割&#xff1a;一个物体被分割成多个不连续的部分欠分割&am…...

零代码自动化:OpenClaw+GLM-4.7-Flash实现跨平台数据同步

零代码自动化&#xff1a;OpenClawGLM-4.7-Flash实现跨平台数据同步 1. 为什么选择OpenClaw处理跨平台数据同步&#xff1f; 去年我接手了一个棘手的任务&#xff1a;每周需要从某电商平台导出销售数据&#xff0c;清洗后上传到内部数据库。手动操作不仅耗时2-3小时&#xff…...

UVM避坑指南:为什么你的sequence卡住了?item_done没调用的常见问题排查

UVM验证中的sequence卡死问题&#xff1a;item_done未调用的深度排查手册 在芯片验证领域&#xff0c;UVM框架的sequence机制堪称验证工程师的"瑞士军刀"&#xff0c;但这把利器偶尔也会出现卡壳的情况。想象一下这样的场景&#xff1a;你的验证环境已经运行了数百个…...

如何在普通PC上低成本部署Qwen3?VLLM轻量化配置指南

如何在普通PC上低成本部署Qwen3&#xff1f;VLLM轻量化配置指南 对于大多数个人开发者和小型团队来说&#xff0c;高性能服务器和顶级显卡往往是可望而不可及的奢侈品。但别担心&#xff0c;即使你只有一台普通PC&#xff0c;也能通过合理的配置和优化手段成功部署Qwen3这样的大…...

Oracle Product Hub Portal Cloud(简称 OPH Cloud)是 Oracle 提供的基于云的主数据管理(MDM)解决方案

Oracle Product Hub Portal Cloud&#xff08;简称 OPH Cloud&#xff09;是 Oracle 提供的基于云的主数据管理&#xff08;MDM&#xff09;解决方案&#xff0c;专为统一、治理和分发产品主数据而设计。它是 Oracle Cloud Enterprise Resource Planning (ERP)、Supply Chain M…...

DanKoe 视频笔记:个人商业模型:第三部分:如何将知识转化为价值

概述 在本节课中&#xff0c;我们将学习如何将你头脑中积累的知识和经验&#xff0c;转化为能够创造价值并带来收益的产品或服务。我们将探讨一个系统化的方法&#xff0c;帮助你从自我提升走向自我实现&#xff0c;并最终实现自我超越。 信息&#xff1a;新时代的基石 上一…...

学术专著不用愁!AI专著生成工具,高效打造专业学术精品

学术专著的魅力在于其逻辑严谨性&#xff0c;但在写作过程中&#xff0c;逻辑推理常常是最容易出现问题的部分。创作专著需要围绕核心观点进行系统的论证&#xff0c;不仅要对每个论点进行详细阐述&#xff0c;还需要处理不同学派之间的争论&#xff0c;确保整个框架逻辑自洽&a…...

突破限制:跨设备使用三星笔记的开源技术方案

突破限制&#xff1a;跨设备使用三星笔记的开源技术方案 【免费下载链接】galaxybook_mask This script will allow you to mimic your windows pc as a Galaxy Book laptop, this is usually used to bypass Samsung Notes 项目地址: https://gitcode.com/gh_mirrors/ga/gal…...

嵌入式软件开发相关的硬件知识及技能

对于嵌入式软件开发工程师来说&#xff0c;硬件知识并非要求达到硬件工程师那样的设计深度&#xff0c;而是更侧重于理解、交互与协同。掌握必要的硬件知识&#xff0c;能让你写出更稳定、更高效的代码&#xff0c;并在软硬件联调时快速定位问题。以下从几个核心层面详述所需掌…...

告别格式烦恼!3个让视频播放丝滑的小妙招

周末窝在沙发上追剧&#xff0c;结果播放器突然弹出"格式不支持"的提示&#xff1b;精心拍摄的旅行vlog想分享给朋友&#xff0c;却发现文件太大传不过去——这些视频格式的小麻烦&#xff0c;是不是让你头疼过&#xff1f;其实掌握几个实用技巧&#xff0c;就能让视…...