【代码随想录算法训练营第五十九天|卡码网110.字符串接龙、105.有向图的完全可达性、106.岛屿的周长】

文章目录

  • 卡码网110.字符串接龙
  • 105.有向图的完全可达性
  • 106.岛屿的周长

卡码网110.字符串接龙

这题是在字符串上进行广搜,字符串广搜是对一个字符串按照位置来搜索,与原字符串只有一个位置字符不同那么就是在原字符串的基础上距离加1。因此需要一个字典来记录每个字符串和beginStr的距离,然后创建一个队列,每次对队列第一个字符串进行广搜,找到匹配且没有访问过的字符串就加入队列尾部等待处理,并且在字典中令他的距离变成现在访问的字符串的距离+1,直到遇见和endStr匹配的字符串输出距离。因为广搜是距离从小到达搜索的,所以第一次遇到和endStr匹配的就一定是最小距离。

import re
import collections
def bfs(strings, beginStr, endStr):visited = {}for string in strings:visited[string] = 1visited[beginStr] = 1st = collections.deque([beginStr])while st:temp = st.popleft()path = visited[temp]for i in range(len(beginStr)):regex = re.compile(temp[:i]+'.'+temp[i+1:])if regex.fullmatch(endStr):return path+1for s in strings:if regex.fullmatch(s) and visited[s] == 1:st.append(s)visited[s] = path + 1return 0if __name__ == '__main__':n = int(input())beginStr, endStr = input().split()strings = []for i in range(n):strings.append(input())print(bfs(strings, beginStr, endStr))

105.有向图的完全可达性

DFS去从1开始深度搜索,搜索到的结点标注,最后如果所有结点都标注了就输出1否则为-1。

def dfs(cur, pairs, visited):if visited[cur]==1:return visited[cur] = 1for nextNode in pairs[cur]:dfs(nextNode, pairs, visited)if __name__=='__main__':n, k = map(int, input().split())pairs = [[] for _ in range(n+1)]for i in range(k):a, b = map(int, input().split())pairs[a].append(b)visited = [0] * (n+1)dfs(1, pairs, visited)if sum(visited) == n:print(1)else:print(-1)

106.岛屿的周长

就是在之前岛屿相关题目的基础上变形,在dfs/bfs的时候,如果遇到岛屿在往下一个区域探到海洋,那就让周长+1,别的都一样。

def dfs(x, y, islands, visited, perimeter):visited[x][y] = Truen = len(islands)m = len(islands[0])directions = [[1, 0], [-1, 0], [0, 1], [0, -1]]for d in directions:nextx = x + d[0]nexty = y + d[1]if nextx < 0 or nextx >= n or nexty < 0 or nexty >= m:perimeter += 1continueif islands[nextx][nexty] == 0:perimeter += 1continueif islands[nextx][nexty] == 1 and visited[nextx][nexty] == False:perimeter = dfs(nextx, nexty, islands, visited, perimeter)return perimeter
if __name__ == '__main__':n, m = map(int, input().split())islands = [[0] * m for _ in range(n)]for i in range(n):lands = input().split()for j in range(m):islands[i][j] = int(lands[j])visited = [[False] * m for _ in range(n)]for i in range(n):for j in range(m):if islands[i][j] == 1 and visited[i][j] == False:perimeter = dfs(i, j, islands, visited, 0)print(perimeter)

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

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

相关文章

获取VC账号,是成为亚马逊供应商的全面准备与必要条件

成为亚马逊的供应商&#xff0c;拥有VC&#xff08;Vendor Central&#xff09;账号&#xff0c;是众多制造商和品牌所有者的共同目标。这不仅代表了亚马逊对供应商的高度认可&#xff0c;也意味着获得了更多的销售机会和更广阔的市场前景。 全面准备与必要条件是获取VC账号的关…

代码转换成AST语法树移除无用代码console.log、import

公司中代码存在大量,因此产生 可以使用 @babel/parser 解析代码生成 AST (抽象语法树),然后使用 @babel/traverse 进行遍历并删除所有的 console.log 语句,最后使用 @babel/generator 生成修改后的代码。 这里有一个网址,可以线上解析代码转换成AST语法树: https://astex…

Python爬虫康复训练——笔趣阁《神魂至尊》

还是话不多说&#xff0c;很久没写爬虫了&#xff0c;来个bs4康复训练爬虫&#xff0c;正好我最近在看《神魂至尊》&#xff0c;爬个txt文件下来看看 直接上代码 """ 神魂至尊网址-https://www.bqgui.cc/book/1519/ """ import requests from b…

【C++】 解决 C++ 语言报错:未定义行为(Undefined Behavior)

文章目录 引言 未定义行为&#xff08;Undefined Behavior, UB&#xff09;是 C 编程中非常危险且难以调试的错误之一。未定义行为发生时&#xff0c;程序可能表现出不可预测的行为&#xff0c;导致程序崩溃、安全漏洞甚至硬件损坏。本文将深入探讨未定义行为的成因、检测方法…

零基础STM32单片机编程入门(七)定时器PWM波输出实战含源码视频

文章目录 一.概要二.PWM产生框架图三.CubeMX配置一个TIME输出1KHZ&#xff0c;占空比50%PWM波例程1.硬件准备2.创建工程3.测量波形结果 四.CubeMX工程源代码下载五.讲解视频链接地址六.小结 一.概要 脉冲宽度调制(PWM)&#xff0c;是英文“Pulse Width Modulation”的缩写&…

通过营销本地化解锁全球市场

在一个日益互联的世界里&#xff0c;企业必须接触到全球各地的不同受众。营销本地化是打开这些全球市场的关键。它包括调整营销材料&#xff0c;使其与不同地区的文化和语言细微差别产生共鸣。以下是有效的营销本地化如何推动您的全球扩张&#xff0c;并用实际例子来说明每一点…

UrbanGPT: Spatio-Temporal Large Language Models

1.文章信息 本次介绍的文章是2024年arxiv上一篇名为《UrbanGPT: Spatio-Temporal Large Language Models》的文章&#xff0c;UrbanGPT旨在解决城市环境中的时空预测问题&#xff0c;通过大语言模型&#xff08;LLM&#xff09;的强大泛化能力来应对数据稀缺的挑战。 2.摘要 Ur…

SQLAlchemy批量操作数据

批量插入 session.bulk_insert_mappings(ModelClass, list(dict()))批量更新 session.bulk_update_mappings(ModelClass, list(dict())

Flutter的生命周期方法

Flutter的生命周期执行时机可以分为两个主要部分&#xff1a;Flutter本身的组件生命周期&#xff08;widget生命周期&#xff09;和平台相关的应用程序生命周期&#xff08;APP生命周期&#xff09;。 Widget生命周期 Widget生命周期可以细分为三个阶段&#xff1a; 初始化阶…

centos ssh一键升级到9.8版本脚本

背景 前端时间暴露出ssh漏洞&#xff0c;需要将服务器ssh版本&#xff0c;目前ssh版本最新版为9.8&#xff0c;故在服务器测试&#xff0c;准备将所有服务器ssh版本升级。脚本在centos7.6上亲测可用。#!/bin/bash #Author Mr zhangECHO_GREEN() {echo -e "\033[32m $1...…

昇思MindSpore学习总结九——FCN语义分割

1、语义分割 图像语义分割&#xff08;semantic segmentation&#xff09;是图像处理和机器视觉技术中关于图像理解的重要一环&#xff0c;AI领域中一个重要分支&#xff0c;常被应用于人脸识别、物体检测、医学影像、卫星图像分析、自动驾驶感知等领域。 语义分割的目的是对图…

【楚怡杯】职业院校技能大赛 “Python程序开发”赛项样题三

Python程序开发实训 &#xff08;时量&#xff1a;240分钟&#xff09; 中国XX 实训说明 注意事项 1. 请根据提供的实训环境&#xff0c;检查所列的硬件设备、软件清单、材料清单是否齐全&#xff0c;计算机设备是否能正常使用。 2. 实训结束前&#xff0c;在实训平台提供的…

从数据到智能,英智私有大模型助力企业实现数智化发展

在数字化时代&#xff0c;数据已经成为企业最重要的资源。如何将这些数据转化为实际的业务价值&#xff0c;是每个企业面临的重要课题。英智利用业界领先的清洗、训练和微调技术&#xff0c;对企业数据进行深度挖掘和分析&#xff0c;定制符合企业业务场景的私有大模型&#xf…

筛选有合并单元格的数据

我们经常会使用合并单元格&#xff0c;比如下面表格&#xff0c;因为一个部门中会有不同的员工&#xff0c;就会出现如下表格&#xff1a; 但是当按部门去筛选的时候&#xff0c;会发现并不是我们预期的结果&#xff0c;部门列有空值&#xff0c;每个部门只有第一行数据可以被…

虚幻引擎 快速的色度抠图 Chroma Key 算法

快就完了 ColorTolerance_PxRange为容差&#xff0c;这里是0-255的输入&#xff0c;也就是px单位&#xff0c;直接用0-1可以更快 Key为目标颜色

PySide6 实现资源的加载:深入解析与实战案例

目录 1. 引言 2. 加载内置资源 3. 使用自定义资源文件&#xff08;.qrc&#xff09; 创建.qrc文件 编译.qrc文件 加载资源 4. 动态加载UI文件 使用Qt Designer设计UI 加载UI文件 5. 注意事项与最佳实践 6. 结论 在开发基于PySide6的桌面应用程序时&…

什么是 DDoS 攻击及如何防护DDOS攻击

自进入互联网时代&#xff0c;网络安全问题就一直困扰着用户&#xff0c;尤其是DDOS攻击&#xff0c;一直威胁着用户的业务安全。而高防IP被广泛用于增强网络防护能力。今天我们就来了解下关于DDOS攻击&#xff0c;以及可以防护DDOS攻击的高防IP该如何正确选择使用。 一、什么是…

个人引导页+音乐炫酷播放器(附加源码)

个人引导页音乐炫酷播放器 效果图部分源码完整源码领取下期更新内容 效果图 部分源码 //网站动态标题开始 var OriginTitile document.title, titleTime; document.addEventListener("visibilitychange", function() {if (document.hidden) {document.title "…

极客时间 - 《Linux 性能优化实战》

极客时间 - 《Linux 性能优化实战》原文链接&#xff1a;https://time.geekbang.org/column/intro/100020901 02 | 基础篇&#xff1a;到底应该怎么理解“平均负载”&#xff1f;在Linux系统中&#xff0c;当一个进程启动时&#xff0c;操作系统会为该进程申请哪些资源&#x…

Python学习从0开始——Kaggle实践可视化001

Python学习从0开始——Kaggle实践可视化001 一、创建和加载数据集二、数据预处理1.按name检查&#xff0c;处理重复值&#xff08;查重&#xff09;2.查看存在缺失值的列并处理&#xff08;缺失值处理&#xff09;2.1按行或列查看2.2无法推测的数据2.3可由其它列推测的数据 3.拆…