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

文章目录

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

110. 字符串接龙

卡码网 110. 字符串接龙
代码随想录

广度优先第一个遇到的就是最短的。

from collections import deque
n = int(input().strip())start, end = input().split()strList = []
for _ in range(n):strList.append(input().strip())visited = [False] * n# 判断是否只有一个字符不同
def judge(str1, str2):count = 0for i in range(len(str1)):if str1[i] != str2[i]:count += 1return count == 1if start == end:print(0)exit()queue = deque()
queue.append([start, 1])while queue:str1, step = queue.popleft()if judge(str1, end):print(step+1)exit()for i in range(n):if visited[i] == False and judge(str1, strList[i]):visited[i] = Truequeue.append([strList[i], step+1])
print(0)

105.有向图的完全可达性

卡码网 105.有向图的完全可达性
代码随想录

从1出发,广度优先遍历,没遍历到的就是不可达的。

import collectionsn, k = map(int, input().split())visited = [False] * (n+1)
graph = collections.defaultdict(list)
# graph = collections.defaultdict(list)for _ in range(k):i,j = map(int, input().split())graph[i].append(j)def bfs(graph, visited, start):queue = []queue.append(start)while queue:node = queue.pop()visited[node] = Truefor i in range(len(graph[node])):if not visited[graph[node][i]]:queue.append(graph[node][i])
# 遍历                
bfs(graph, visited, 1)# 检查是否所有的节点都可达
for i in range(1, n+1):if visited[i] == False:print(-1)exit()
print(1)

106. 岛屿的周长

卡码网 106. 岛屿的周长
代码随想录

加一个水边框,一块陆地遇到有水的方向周长就可以加1了。

n, m = map(int, input().split())
graph = []for _ in range(n):graph.append(list(map(int, input().split())))visited = [[False]* (m+2) for _ in range(n+2)]# 给graph加上一个边框
graph.insert(0,[0]*m)
graph.append([0]*m)for i in range(n+2):graph[i].insert(0,0)graph[i].append(0)directions = [[-1,0], [1,0], [0,1], [0,-1]]def bfs(graph, visited, x, y):radius = 0queue = []visited[x][y] = Truequeue.append([x,y])while queue:cur_x, cur_y = queue.pop()for i, j in directions:new_x, new_y = cur_x+i, cur_y+j# 遍历if graph[new_x][new_y] == 1 and not visited[new_x][new_y]:queue.append([new_x, new_y])visited[new_x][new_y] = Trueif graph[new_x][new_y] == 0:radius += 1visited[new_x][new_y] = Truereturn radiusres = 0
for i in range(1, n+1):for j in range(1, m+1):if graph[i][j] == 1 and not visited[i][j]:res = bfs(graph, visited, i, j)
print(res)

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

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

相关文章

15分钟学 Go 第 15 天:映射(Map)

第15天:映射(Map) 学习目标 在本节中,我们将深入理解Go语言中的字典类型(映射),通过例子与图示来帮助你掌握其使用方法。我们将涵盖以下几个方面: 概念定义创建和使用映射访问和更…

从零学习大模型(三)-----GPT3(下)

特殊初始化与优化 初始化方法:GPT-3 的模型使用了与 GPT-2 类似的修改初始化方法,包括预归一化(pre-normalization)**和**可逆标记化(reversible tokenization),从而在训练过程中更好地保持模型…

H7-TOOL的LUA小程序教程第15期:电压,电流,NTC热敏电阻以及4-20mA输入(2024-10-21,已经发布)

LUA脚本的好处是用户可以根据自己注册的一批API(当前TOOL已经提供了几百个函数供大家使用),实现各种小程序,不再限制Flash里面已经下载的程序,就跟手机安装APP差不多,所以在H7-TOOL里面被广泛使用&#xff…

输入输出--I/O流【C++提升】

1.1基础知识&#xff1a; 在C中&#xff0c;输入输出&#xff08;IO&#xff09;流是通过标准库中的 <iostream> 头文件来处理的。C 提供了几种基本的输入输出流类&#xff0c;最常用的有以下几种&#xff1a; std::cin&#xff1a;用于输入。std::cout&#xff1a;用于…

python的Django的render_to_string函数和render函数的使用

一、render_to_string render_to_string 是 Django 框架中的一个便捷函数&#xff0c;用于将模板渲染为字符串。 render_to_string(template_name.html, context, requestNone, usingNone) template_name.html&#xff1a;要渲染的模板文件的名称。context&#xff1a;传递给…

UICollectionView 的UICollectionReusableView复用 IOS18报错问题记录

- (UICollectionReusableView *)collectionView:(UICollectionView *)collectionView viewForSupplementaryElementOfKind:(NSString *)kind atIndexPath:(NSIndexPath *)indexPath 方法复用报错 报错详情&#xff1a; Terminating app due to uncaught exception NSInternal…

无人机电机运行算法

一、电机控制策略 无人机电机通常采用无刷直流电机&#xff08;BLDC&#xff09;或永磁同步电机&#xff08;PMSM&#xff09;&#xff0c;其控制策略主要包括以下几个方面&#xff1a; PID控制&#xff1a; PID&#xff08;Proportional Integral Derivative&#xff09;控…

如何保证系统的高并发,高性能,高可用

三高理论图 三高架构图 构建弹性伸缩架构、实现负载均衡和自动扩展 采用分布式微服务集群的架构&#xff0c;将系统拆分成多个独立的模块&#xff0c;每个模块可以独立部署&#xff0c;独立拓展&#xff0c;每个模块可以部署多个实例。 做好负载均衡&#xff0c;将流量合理地…

to_sql报错not all arguments converted during string formatting

报错&#xff1a; DatabaseError: Execution failed on sql SELECT name FROM sqlite_master WHERE typetable AND name?;: not all arguments converted during string formattingb 报错的代码如下&#xff1a; import pymysql import pandas as pd con pymysql.connect(…

双向循环带头链表

双向循环带头链表是一种复杂的数据结构。 带头链表是指在链表的最前端有一个额外的节点&#xff08;头节点&#xff09;&#xff0c;这个头节点不存储实际的数据&#xff0c;主要用于方便链表的操作&#xff0c;比如在表头插入或删除节点时不用特殊处理空链表的情况。 双向…

Linux基础命令(入门)

linux 用户 root 用户 一个特殊的管理帐户 也被称为超级用户 root已接近完整的系统控制 对系统损害几乎有无限的能力 除非必要,不要登录为 root 普通&#xff08; 非特权 &#xff09; 用户权限有限 造成损害的能力比较有限 linux的哲学思想&#xff08;优点&#xf…

DCS项目调试踩坑记录

最近在调试一个DCS项目&#xff08;集散控制系统&#xff09;&#xff0c;实际上就是一个新建厂区的控制系统。PLC用的是西门子1500&#xff0c;控制画面使用组态王7.5。 在调试过程中&#xff0c;发现给西门子DB块的变量转移到组态王太难了&#xff0c;因此记录一下&#xff0…

#{}和${}

总结&#xff1a; #{}&#xff1a;先编译sql语句&#xff0c;再给占位符传值&#xff0c;底层是PreparedStatement实现。可以防止sql注入&#xff0c;比较常用。 ${}&#xff1a;先进行sql语句拼接&#xff0c;然后再编译sql语句&#xff0c;底层是Statement实现。存在sql注入…

pthread_create

pthread_create 是 POSIX 线程&#xff08;Pthreads&#xff09;库中的一个函数&#xff0c;用于创建一个新的线程。这个函数允许程序在运行时并发执行多个线程&#xff0c;从而提高程序的效率和响应能力。 函数原型 #include <pthread.h>int pthread_create(pthread_t…

【设计模式-我的思考】套餐模式

imom排故下线-订单状态集查询功能实现(套餐模式) 需求描述 排故下线状态 不排故&#xff1a;未启用排故下线确认配置&订单状态参数值&#xff01;&#xff08;170、180、190&#xff09; 待排故&#xff1a;启用排故下线确认配置&排故下线确认未执行&订单状态参数…

Spire.PDF for .NET【页面设置】演示:在 C# 中应用 PDF 页面转换

当您在导出为 PDF 格式的文档中翻页时&#xff0c;页面过渡会显示装饰效果&#xff0c;例如溶解或擦除。当您以 PDF 格式创建幻灯片时&#xff0c;页面过渡特别有用。Spire.PDF是一款专为开发人员设计的强大 .NET 组件&#xff0c;可让您将页面过渡应用于 PDF 文件。 这里介绍…

vue3学习记录-组件通信

vue3学习记录-组件通信 1.父子组件通信2.兄弟组件传值2.1 以父组件为媒介2.2 发布订阅模式2.3 使用mitt2.3.1 全局使用2.3.2 局部使用 1.父子组件通信 父组件&#xff1a; <template>父组件原有的title:{{ title }}<p>---</p><com :title"title&qu…

MyBatis入门之一对一关联关系(示例)

【图书介绍】《SpringSpring MVCMyBatis从零开始学&#xff08;视频教学版&#xff09;&#xff08;第3版&#xff09;》-CSDN博客 《SpringSpring MVCMyBatis从零开始学(视频教学版)&#xff08;第3版&#xff09;》(杨章伟&#xff0c;刘祥淼)【摘要 书评 试读】- 京东图书 …

RK3576 安卓SDK编译环境搭建

编译 Android14 对机器的配置要求较高: 建议预留500G存储 多分配CPU和内存 建议使用 Ubuntu 20.04 操作系统或更高版本 sudo apt-get updatesudo apt-get install git gnupg flex bison gperf libsdl1.2-dev \ libesd-java libwxgtk3.0-dev squashfs-tools build-essential …

软考-软件设计师(11)-专题强化-算法设计与分析-算法特性、算法表示、算法时间复杂度、算法分类、C语言程序设计

场景 以下为高频考点、知识点汇总。 软件设计师上午选择题知识点、高频考点、口诀记忆技巧、经典题型汇总: 软考-软件设计师(1)-计算机基础知识点:进制转换、数据编码、内存编址、串并联可靠性、海明校验码、吞吐率、多媒体等: 软考-软件设计师(1)-计算机基础知识点:进制…