【代码随想录算法训练营第五十九天|卡码网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] = 1
    visited[beginStr] = 1
    st = 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+1
            for s in strings:
                if regex.fullmatch(s) and visited[s] == 1:
                    st.append(s)
                    visited[s] = path + 1
    return 0

if __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] = 1
    for 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] = True
    n = 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 += 1
            continue
        if islands[nextx][nexty] == 0:
            perimeter += 1
            continue
        if 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.mfbz.cn/a/775915.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

uniapp启动安卓模拟器mumu

mumu模拟器下载 ADB&#xff1a; android debug bridge &#xff0c; 安卓调试桥&#xff0c;是一个多功能的命令行工具&#xff0c;他使你能够与连接的安卓设备进行交互 # adb连接安卓模拟器 adb connect 127.0.0.1:port # 查看adb设备 adb deviceshubuilderx 有内置的adb&a…

使用 Git Hooks 防止敏感信息泄露

欢迎关注公众号&#xff1a;冬瓜白 在日常开发中&#xff0c;我们可能会不小心将敏感信息提交到 Git。为了防止这种情况&#xff0c;可以利用 Git Hooks 编写一个简单的脚本&#xff0c;当发现提交中包含敏感词时&#xff0c;给出提示。 以下是一个基于 pre-commit 钩子的示例…

【MindSpore学习打卡】应用实践-计算机视觉-深入解析 Vision Transformer(ViT):从原理到实践

在近年来的深度学习领域&#xff0c;Transformer模型凭借其在自然语言处理&#xff08;NLP&#xff09;中的卓越表现&#xff0c;迅速成为研究热点。尤其是基于自注意力&#xff08;Self-Attention&#xff09;机制的模型&#xff0c;更是推动了NLP的飞速发展。然而&#xff0c…

Git代码提交流程

1. 核心流程 2. 完成流程

LeetCode 196, 73, 105

目录 196. 删除重复的电子邮箱题目链接表要求知识点思路代码 73. 矩阵置零题目链接标签简单版思路代码 优化版思路代码 105. 从前序与中序遍历序列构造二叉树题目链接标签思路代码 196. 删除重复的电子邮箱 题目链接 196. 删除重复的电子邮箱 表 表Person的字段为id和email…

我遭遇的奥数难题(持续更新)

第一题 地上有四堆石子&#xff0c;石子数分别是1、9、15、31。如果每次从其中的三堆同时各取出1个&#xff0c;然后都放入第四堆中&#xff0c;那么&#xff0c;能否经过若干次操作&#xff0c;使得四堆石子的个数都相同?(如果能&#xff0c;请说明具体操作&#xff0c;不能…

【html】许多大型网页都会有一个自己的主题色

许多网站确实会选择一种或几种特定的颜色作为他们的主题色&#xff0c;这通常是为了建立品牌识别度和一致性。 主题色在网站设计中起着至关重要的作用&#xff0c;它们不仅影响网站的视觉效果&#xff0c;还能传达品牌的情感和价值观。选择适当的主题色可以增强用户的品牌记忆…

从传统到智能:工业园区消防管理开始华丽转身

一、工业园区的消防管理现状 然而&#xff0c;当我们审视当前工业园区的消防管理现状时&#xff0c;不难发现其中存在诸多不足。首先&#xff0c;消防信息的智能化程度低&#xff0c;仿佛一位年迈的守望者&#xff0c;力不从心&#xff0c;难以即时将现场的数据信息传达至指挥…

重定向与转发

转发参数不会自动包含在新的请求中。若要将参数传递给重定向地址&#xff0c;可以在服务器端显式地添加参数到重定向URL中。 在重定向URL中包含参数 import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; impor…

TCP的pop网络模式

TCP的pop网络模式 1、tcp连接的状态有以下11种 CLOSED&#xff1a;关闭状态LISTEN&#xff1a;服务端状态&#xff0c;等待客户端发起连接请求SYN_SENT&#xff1a;客户端已发送同步连接请求&#xff0c;等待服务端相应SYN_RECEIVED&#xff1a;服务器收到客户端的SYN请请求&…

巨头们涌入的医疗大模型,何时迎来最好的商业时代?_google医疗大模型 医疗大模型

当下极为火爆的大模型&#xff0c;在医疗赛道同样炙手可热。谷歌刚刚发布了准确率达 91.1%、性能远超 GPT-4 系列的多模态医学大模型 Med-Gemini&#xff0c;国内市场亦很热闹。自 2023 年以来&#xff0c;百度、腾讯、京东等诸多大厂都相继加码医疗大模型领域&#xff0c;与医…

C++:Level3阶段测试

1、黑客小知识&#xff1a; &#xff08;1&#xff09;常用的黑客头文件有____和____。 &#xff08;2&#xff09;创建文件的函数叫做________。 &#xff08;3&#xff09;我更新了____个黑客头文件。 &#xff08;4&#xff09;万能头文件包含的黑客头文件是________。 …

2.4G无线收发芯片 XL2401D,SOP16封装,集成单片机,高性价比

XL2401D 芯片是工作在2.400~2.483GHz世界通用ISM频段&#xff0c;片内集成了九齐 NY8A054E单片机的SOC无线收发芯片。芯片集成射频收发机、频率收生器、晶体振荡器、调制解调器等功能模块&#xff0c;并且支持一对多组网和带ACK的通信模式。发射输出功率、工作频道以及通信数据…

NoSQL 非关系型数据库 Redis 的使用:

redis是基于内存型的NoSQL 非关系型数据库&#xff0c;本内容只针对有基础的小伙伴&#xff0c; 因为楼主不会做更多的解释&#xff0c;而是记录更多的技术接口使用&#xff0c;毕竟楼主不是做教学的&#xff0c;没有教学经验。 关于redis的介绍请自行搜索查阅。 使用redis数据…

【HICE】基于用户认证的虚拟服务搭建

1.创建特定的内容 --账号与密码&#xff08;需要认证访问&#xff09;【里面】 2.编辑配置1.conf的内容&#xff0c;更新httpd 3.编辑hehe网页&#xff08;外部公开&#xff09; cd /www/ echo hehe > hehe/index.html 4.更改本地hosts和window下的解析 5.浏览器下验证内…

新手快速部署Springboot 的Jar包 (图解-BuiId,Maven)

目录 项目的构建 打包前的准备 合理配置pox.xml文件 Build 打包方式 Maven打包方式 Jar包部署 测试后端接口 项目的构建 我的项目是SpringBoot2脚手架 先准备一个相对于的数据库依赖 数据库的任意库 Yaml配置后 才能正常在IDEA中跑起来 打包前的准备 合理配置pox.xm…

【qt】如何获取网卡的IP地址?

网卡相当于是一个翻译官,可以将数据转换成网络信号. 同时也可以将网络信号转换成数据. 我们要用到网卡类QNetmorkInterface 我们获取网卡的所有地址用静态函数allAddresses() 返回的还是一个QhostAddress的容器. QList<QHostAddress> addrList QNetworkInterface::allA…

【笔记】记一次在linux上通过在线安装mysql报错 CentOS 7 的官方镜像已经不再可用的解决方法+mysql配置

报错&#xff08;恨恨恨恨恨恨恨&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff09;&#xff1a; [rootlocalhost ~]# sudo yum install mysql-server 已加载插件&#xff1a;fastestmirror, langpacks Determining fastest mirrors Could not retrie…

达梦数据库系列—22. DPC集群原理

目录 DPC原理 1、系统原理 2、元数据服务 3、数据存储 4、执行计划的生成 5、计算与存储分离 6、动态增删节点 7、分布式事务一致性 第一阶段 预提交 第二阶段 提交 8、RAFT 归档 9、自动故障处理 DPC原理 计划生成节点&#xff08;SP&#xff09;&#xff1a;对外…

【PTGui、Pano2VR6、UE4】VR全景拍摄及漫游交互制作操作实例(更新中)

一、基本思路 首先进行VR全景拍摄&#xff0c;获取高质量的全景图像&#xff1b;然后使用PTGui进行图像拼接&#xff0c;确保图像的连续性与准确性&#xff1b;接着利用Pano2VR6进行VR漫游的制作&#xff0c;添加交互元素与多媒体内容&#xff1b;最后进行作品的调试与优化&am…