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

第十一章:图论part04 110.字符串接龙 105.有向图的完全可达性 106.岛屿的周长(补)

任务日期:7.29

题目一链接:110. 字符串接龙 (kamacoder.com)

思路:将本题寻找附近的字符串等效于寻找四周的陆地,即寻找周围与当前字符只有一位不同的字符串,然后加入到队列中并标记上,在此基础上要将字符串对应路径长度,最后输出长度即可

代码:

#include <bits/stdc++.h>
//思路:将本题寻找附近的字符串等效于寻找四周的陆地,在此基础上要将字符串对应路径长度,最后输出长度即可
using namespace std;
int main() {int n;cin>>n;string beginstr,endstr;cin>>beginstr>>endstr;//定义一个字典集合,方便直接查找unordered_set<string> strlist;for(int i = 0;i < n;i ++) {string str;cin>>str;strlist.insert(str);}//定义一个地图,记录以string为结尾的路径长度,以便查找到endstr后直接返回长度//哈希表的插入和定义要注意unordered_map<string,int> visitedstr;//初始化visitedstr:插入beginstr,并且设置路径长度为1visitedstr.insert(pair<string,int> (beginstr,1));//进行bfsstd::queue<string> que;que.push(beginstr);while(!que.empty()) {string cur = que.front();que.pop();int path = visitedstr[cur];//需要一个变量提前记录一下当前字符串的路径长度for(int i = 0;i < cur.size();i ++){//依次换cur字符串的各个位置string neword = cur;//如果换当前位置那么需要保证其他位置不动,所以要重新定义一个newordfor(int j = 0;j < 26;j ++) {//每个位置依次便利26个字母neword[i] = j + 'a';if(neword == endstr) {cout<<path + 1;//第26行的作用在此体现return 0;}//确定递归终止条件if(strlist.count(neword) && !visitedstr.count(neword)) {//strlist里面有当前字符串并且当前字符串没有被标记que.push(neword);//第28行作用在此体现visitedstr.insert(pair<string,int> (neword,path + 1));第26行的作用在此体现:标记当前字符串并且当前路径+1}}}}cout<<0;return 0;
}

难点:1.哈希表集合和map的创建。集合:unordered_set<string> strlist;                                                               map:unordered_map<string,int> visitedstr;

2.哈希表的插入操作:visitedstr.insert(pair<string,int> (beginstr,1));

3.哈希表map的含义:以string为结尾的路径长度int.

4.用bfs求最短路径,原因在于它是一圈一圈的遍历,当到达目标点时当前路径长一定是最短路径。

,5.在每次便利一个新的string时要用path记录当前路径长度,




题目二链接:

思路:

代码:

难点:

解释细节1:




题目三链接:

思路:

代码:

难点:

解释细节1:

相关文章:

第十一章:图论part04 110.字符串接龙 105.有向图的完全可达性 106.岛屿的周长(补)

任务日期&#xff1a;7.29 题目一链接&#xff1a;110. 字符串接龙 (kamacoder.com) 思路&#xff1a;将本题寻找附近的字符串等效于寻找四周的陆地&#xff0c;即寻找周围与当前字符只有一位不同的字符串&#xff0c;然后加入到队列中并标记上&#xff0c;在此基础上要将字符…...

Linux中安装MYSQL数据库

文章目录 一、MYSQL数据库介绍1.1、MySQL数据库的基本概述1.2、MySQL数据库的主要特性1.3、MySQL数据库的技术架构与组件1.4、MySQL数据库的应用与扩展性1.5、MySQL数据库的许可模式与开源生态 二、MySQL Workbench和phpMyAdmin介绍2.1、MySQL Workbench介绍2.2、phpMyAdmin介绍…...

Vue前端服务加密后端服务解密--AES算法实现

在实际项目中考虑到用户数据的安全性&#xff0c;在用户登录时&#xff0c;前端需要对用户密码加密&#xff08;防止用户密码泄露&#xff09;&#xff0c;服务端收到登录请求时先对密码进行解密&#xff0c;然后再进行用户验证登操作。本文使用 AES ECB 模式算法来实现前端机密…...

matlab实现文字识别

在MATLAB中实现文字识别通常涉及图像处理技术和机器学习算法&#xff0c;特别是使用MATLAB内置的Image Processing Toolbox和Machine Learning Toolbox。下面是一个基本的步骤指南&#xff0c;展示如何在MATLAB中设置和执行一个简单的OCR&#xff08;Optical Character Recogni…...

Leetcode - 周赛409

目录 一&#xff0c;3242. 设计相邻元素求和服务 二&#xff0c;3243. 新增道路查询后的最短距离 I 三&#xff0c;3244. 新增道路查询后的最短距离 II 四&#xff0c;3245. 交替组 III 一&#xff0c;3242. 设计相邻元素求和服务 本题纯模拟&#xff0c;代码如下&#xff…...

突破百度网盘的下载限速,两种方法教会你【超详细】

一、前言 Hello&#xff0c;大家后&#xff0c;我是博主英杰&#xff0c;前几天&#xff0c;我在使用百度网盘过程中&#xff0c;下载速度极慢&#xff0c;自己作为一个白嫖党&#xff0c;开会员也是心疼那点钱&#xff0c;所以在网上找了几个有效解决百度网盘限速问题的教程&a…...

整理 酷炫 Flutter 优质 布局、交互 开源App

xtimer-flutter-app Flutter 计时器应用 项目地址&#xff1a;https://github.com/pedromassango/xtimer-flutter-app 项目Demo&#xff1a;https://download.csdn.net/download/qq_36040764/89631382...

【PyCharm怎么同时打开多个项目】

问题描述&#xff1a; 之前点击了“dont ask again”&#xff0c;再也不能同时打开两个或多个项目了。 解决&#xff1a; file->settings->appearance->system settings->project->选择ask...

使用 ProcDump 调试 Linux

Debug Linux using ProcDump By Gaurav Kamathe July 17, 2020 译者&#xff1a;wxy 校对&#xff1a;wxy 微软越来越心仪 Linux 和开源&#xff0c;这并不是什么秘密。在过去几年中&#xff0c;该公司稳步地增加了对开源的贡献&#xff0c;包括将其部分软件和工具移植到 L…...

2023年中国城市统计年鉴(PDF+excel)

2023年中国城市统计年鉴 1、时间&#xff1a;1985-2023年 2、格式&#xff1a;PDFexcel 3、说明&#xff1a;中国城市统计年鉴收录了全国各级城市社会经济发展等方面的主要统计数据&#xff0c;数据来源于各城市的相关部门。本年鉴内容共分四个部分&#xff1a;第一部分是全…...

自用 K8S 资源对象清单 YAML 配置模板手册-1

Linux 常用资源对象清单配置速查手册-1 文章目录 1、Pod 容器集合2、Pod 的存储卷3、Pod 的容器探针4、ResourceQuota 全局资源配额管理5、PriorityClass 优先级类 管理多个资源对象清单文件常用方法&#xff1a; 使用 sed 流式编辑器批量修改脚本键值进行资源清单的创建&am…...

【数据库】事务 | 视图 | 自定义函数创建

1、事物及其特征 事物机制的应用&#xff1a;淘宝订单交易&#xff0c;微信转账等。 视图--------筛子---------过滤-------筛选想要的信息 数据库只存放了视图对应的SQL语句。 视图是一个虚拟的表&#xff0c;本质是一个虚拟的SQL命令集合。 &#xff08;1&#xff09;创建…...

Linux---进程(5)---进程地址空间

目录 预备知识 进程地址空间 什么是进程地址空间 为什么要存在进程地址空间和页表 缺页中断 预备知识 我们在学习语言的时候&#xff0c;一般都会了解到内存区域划分&#xff0c;下面了解一下Linux的内存区域划分。 通过上图&#xff0c;我们了解到 1、堆区向上增长&…...

C语言实现数据结构之队列

目录 队列一. 队列的概念及结构二. 队列的实现1. 要实现的功能2 具体的实现2.1 结构体2.2 初始化2.3 入队列2.4 出队列2.5 返回队首元素2.6 返回队尾元素2.7 队列元素个数2.8 队列判空2.9 队列销毁 三. 队列相关OJ题设计循环队列用队列实现栈用栈实现队列 四. 概念选择题五. 参…...

写一个Vue2和vue3的自定义指令(以复制指定作为示例)

文章目录 一、自定义指令是什么&#xff1f;二、自定义指令有啥用&#xff1f;三、自定义指令怎么用&#xff1f;1.自定义指令的参数2.自定义指令的钩子函数&#xff08;1&#xff09;五个钩子函数的说明&#xff08;2&#xff09;钩子函数的参数(主要参数&#xff1a;el和valu…...

MySQL —— 聚合查询,分组查询 与 联合查询

聚合函数 常见的统计总数、计算平局值等操作&#xff0c;可以使用聚合函数来实现&#xff0c;常见的聚合函数有&#xff1a; 函数说明count()统计数据总数sum()求和avg()求平均值max()求最大值min()求最小值 注意凡是涉及运算的&#xff0c;数据库会自动掉 NULL 值 注意NULL …...

Spring声明式事务失效场景

Spring声明式事务失效场景 背景搭建测试环境测试事务失效场景Transactional 注解标注在 private 方法上异常被 catch 了&#xff0c;事务失效方法抛出的是受检异常&#xff0c;事务也会失效事务传播行为配置不合理导致事务失效 背景 Spring 针对 Java Transaction API (JTA)、…...

基于SpringBoot+UniAPP宠物食品外卖点单小程序的设计与实现》

✅博主简介&#xff1a;Java 全栈开发工程师&#xff0c;抖音优质技术创作者&#xff0c;日常分享实用的前端、后端、运维开发技术。 ✅技术栈&#xff1a;Java、SpringBoot、Vue、React、Node.js、Nest.js、Nuxt.js、uni-app ✅技术擅长&#xff1a;计算机毕设选题、开题报告、…...

ssrf 内网访问 伪协议 读取文件 端口扫描

SSRF&#xff08;Server-Side Request Forgery&#xff0c;服务器侧请求伪造&#xff09;是一种利用服务器发起网络请求的能力来攻击内网资源或执行其他恶意活动的技术。SSRF可以用于访问通常不可由外部直接访问的内网资源&#xff0c;读取文件&#xff0c;甚至进行端口扫描。以…...

发布包到npm

目录 注册npm账号 创建包 登录npm 上架包 更新包 删除包 注册npm账号 首先注册npm账号&#xff1a;npm | Sign Up (npmjs.com) 创建包 可以在桌面上新建一个文件夹&#xff1a;文件夹名随便起&#xff0c;但是别跟npm已经上架的包名重复了 可以通过下面的指令查看&…...

变量 varablie 声明- Rust 变量 let mut 声明与 C/C++ 变量声明对比分析

一、变量声明设计&#xff1a;let 与 mut 的哲学解析 Rust 采用 let 声明变量并通过 mut 显式标记可变性&#xff0c;这种设计体现了语言的核心哲学。以下是深度解析&#xff1a; 1.1 设计理念剖析 安全优先原则&#xff1a;默认不可变强制开发者明确声明意图 let x 5; …...

手游刚开服就被攻击怎么办?如何防御DDoS?

开服初期是手游最脆弱的阶段&#xff0c;极易成为DDoS攻击的目标。一旦遭遇攻击&#xff0c;可能导致服务器瘫痪、玩家流失&#xff0c;甚至造成巨大经济损失。本文为开发者提供一套简洁有效的应急与防御方案&#xff0c;帮助快速应对并构建长期防护体系。 一、遭遇攻击的紧急应…...

unix/linux,sudo,其发展历程详细时间线、由来、历史背景

sudo 的诞生和演化,本身就是一部 Unix/Linux 系统管理哲学变迁的微缩史。来,让我们拨开时间的迷雾,一同探寻 sudo 那波澜壮阔(也颇为实用主义)的发展历程。 历史背景:su的时代与困境 ( 20 世纪 70 年代 - 80 年代初) 在 sudo 出现之前,Unix 系统管理员和需要特权操作的…...

人工智能(大型语言模型 LLMs)对不同学科的影响以及由此产生的新学习方式

今天是关于AI如何在教学中增强学生的学习体验&#xff0c;我把重要信息标红了。人文学科的价值被低估了 ⬇️ 转型与必要性 人工智能正在深刻地改变教育&#xff0c;这并非炒作&#xff0c;而是已经发生的巨大变革。教育机构和教育者不能忽视它&#xff0c;试图简单地禁止学生使…...

免费数学几何作图web平台

光锐软件免费数学工具&#xff0c;maths,数学制图&#xff0c;数学作图&#xff0c;几何作图&#xff0c;几何&#xff0c;AR开发,AR教育,增强现实,软件公司,XR,MR,VR,虚拟仿真,虚拟现实,混合现实,教育科技产品,职业模拟培训,高保真VR场景,结构互动课件,元宇宙http://xaglare.c…...

基于Java+VUE+MariaDB实现(Web)仿小米商城

仿小米商城 环境安装 nodejs maven JDK11 运行 mvn clean install -DskipTestscd adminmvn spring-boot:runcd ../webmvn spring-boot:runcd ../xiaomi-store-admin-vuenpm installnpm run servecd ../xiaomi-store-vuenpm installnpm run serve 注意&#xff1a;运行前…...

pycharm 设置环境出错

pycharm 设置环境出错 pycharm 新建项目&#xff0c;设置虚拟环境&#xff0c;出错 pycharm 出错 Cannot open Local Failed to start [powershell.exe, -NoExit, -ExecutionPolicy, Bypass, -File, C:\Program Files\JetBrains\PyCharm 2024.1.3\plugins\terminal\shell-int…...

数据结构:泰勒展开式:霍纳法则(Horner‘s Rule)

目录 &#x1f50d; 若用递归计算每一项&#xff0c;会发生什么&#xff1f; Horners Rule&#xff08;霍纳法则&#xff09; 第一步&#xff1a;我们从最原始的泰勒公式出发 第二步&#xff1a;从形式上重新观察展开式 &#x1f31f; 第三步&#xff1a;引出霍纳法则&…...

内窥镜检查中基于提示的息肉分割|文献速递-深度学习医疗AI最新文献

Title 题目 Prompt-based polyp segmentation during endoscopy 内窥镜检查中基于提示的息肉分割 01 文献速递介绍 以下是对这段英文内容的中文翻译&#xff1a; ### 胃肠道癌症的发病率呈上升趋势&#xff0c;且有年轻化倾向&#xff08;Bray等人&#xff0c;2018&#x…...

在Zenodo下载文件 用到googlecolab googledrive

方法&#xff1a;Figshare/Zenodo上的数据/文件下载不下来&#xff1f;尝试利用Google Colab &#xff1a;https://zhuanlan.zhihu.com/p/1898503078782674027 参考&#xff1a; 通过Colab&谷歌云下载Figshare数据&#xff0c;超级实用&#xff01;&#xff01;&#xff0…...