图论第5天
127.单词接龙
需要cout看一下过程。
#include <iostream>
#include <queue>
#include <stack>
#include <unordered_map>
#include <unordered_set>
#include <vector>
using namespace ::std;class Solution
{
public:int ladderLength(string beginWord, string endWord, vector<string> &wordList){unordered_set<string> wordSet(wordList.begin(), wordList.end()); // 换成unordered_set后查询速度增加if (wordSet.find(endWord) == wordSet.end())return 0;unordered_map<string, int> visitMap; //<word,查询到的路径长度>queue<string> que;que.push(beginWord);visitMap.insert(pair<string, int>(beginWord, 1));while (!que.empty()){string cur_word = que.front();que.pop();int path = visitMap[cur_word];for (int i = 0; i < cur_word.size(); i++){string new_word = cur_word;for (int j = 0; j < 26; j++){new_word[i] = j + 'a';if (new_word == endWord)return path + 1;if (wordSet.find(new_word) != wordSet.end() && visitMap.find(new_word) == visitMap.end()){visitMap.insert(pair<string, int>(new_word, path + 1));que.push(new_word);}}cout << cur_word << endl;cout << i << endl;for (pair<string, int> x : visitMap){cout << "visitMap[" << x.first << "] = " << x.second << " ";}cout << endl;}}return 0;}
};int main()
{Solution syz;string beginWord = "hit", endWord = "cog";vector<string> wordList;wordList.push_back("hot");wordList.push_back("dot");wordList.push_back("dog");wordList.push_back("lot");wordList.push_back("log");wordList.push_back("cog");syz.ladderLength(beginWord, endWord, wordList);return 0;
}
cout运行结果需要看一下,理解一下过程:
所有的word的字母都需要执行一次,所以是0、1、2,
hit 改 h是没有单词加入的,改i会有个hot,改t没有单词加入,所以visitMap里不变。hit这时候已经pop()。
hot改h,增加两个dot\lot,改o\t没有,hot.pop()。
竟然是先dot后lot,跟push顺有关。hot会先push “ d ” 后 push " l "
dot,d\o都没有,t改完,出现一个dog,g会继续往下走,dot.pop()
lot,l\o都没有,出现log.pop()
这时候que里,front 是dog,然后是 log
dog直接知道cog。visitMap[dog] = 4,4 + 1 = 5
hit
0
visitMap[hit] = 1
hit
1
visitMap[hot] = 2 visitMap[hit] = 1
hit
2
visitMap[hot] = 2 visitMap[hit] = 1
hot
0
visitMap[dot] = 3 visitMap[lot] = 3 visitMap[hot] = 2 visitMap[hit] = 1
hot
1
visitMap[dot] = 3 visitMap[lot] = 3 visitMap[hot] = 2 visitMap[hit] = 1
hot
2
visitMap[dot] = 3 visitMap[lot] = 3 visitMap[hot] = 2 visitMap[hit] = 1
dot
0
visitMap[dot] = 3 visitMap[lot] = 3 visitMap[hot] = 2 visitMap[hit] = 1
dot
1
visitMap[dot] = 3 visitMap[lot] = 3 visitMap[hot] = 2 visitMap[hit] = 1
dot
2
visitMap[dog] = 4 visitMap[dot] = 3 visitMap[lot] = 3 visitMap[hot] = 2 visitMap[hit] = 1
lot
0
visitMap[dog] = 4 visitMap[dot] = 3 visitMap[lot] = 3 visitMap[hot] = 2 visitMap[hit] = 1
lot
1
visitMap[dog] = 4 visitMap[dot] = 3 visitMap[lot] = 3 visitMap[hot] = 2 visitMap[hit] = 1
lot
2
visitMap[log] = 4 visitMap[dog] = 4 visitMap[dot] = 3 visitMap[lot] = 3 visitMap[hot] = 2 visitMap[hit] = 1
广搜更适合这道题,会把所有可能性在起始点周边的可能性,一点点往外扩,不会造成走冤枉路。
图论看来一道题就要很刺激啊。 T _ T。明天摸鱼看能不能做两道吧。
相关文章:
图论第5天
127.单词接龙 需要cout看一下过程。 #include <iostream> #include <queue> #include <stack> #include <unordered_map> #include <unordered_set> #include <vector> using namespace ::std;class Solution { public:int ladderLength(…...
Java开发-面试题-0004-HashMap 和 Hashtable的区别
Java开发-面试题-0004-HashMap 和 Hashtable的区别 更多内容欢迎关注我(持续更新中,欢迎Star✨) Github:CodeZeng1998/Java-Developer-Work-Note 技术公众号:CodeZeng1998(纯纯技术文) 生活…...
Swift 序列(Sequence)排序面面俱到 - 从过去到现在(一)
概览 在任何语言中对序列(或集合)元素的排序无疑是一种司空见惯的常规操作,在 Swift 语言里自然也不例外。序列排序看似简单,实则“暗藏玄机”。 要想真正掌握 Swift 语言中对排序的“各种姿势”,我们还得从长计议。不如就先从最简单的排序基本功开始聊起吧。 在本篇博…...
redis 04 redis结构
1.客户端...
【原创】springboot+mysql农业园区管理系统设计与实现
个人主页:程序猿小小杨 个人简介:从事开发多年,Java、Php、Python、前端开发均有涉猎 博客内容:Java项目实战、项目演示、技术分享 文末有作者名片,希望和大家一起共同进步,你只管努力,剩下的交…...
web前端 孙俏:深度探索与实战之路
web前端 孙俏:深度探索与实战之路 在这个数字化、信息化的时代,web前端技术以其独特的魅力,吸引着越来越多的开发者投身其中。今天,我们将跟随孙俏的脚步,一同探索web前端的深度与广度,揭开其神秘的面纱。…...
opencv实战小结-银行卡号识别
实战1-银行卡号识别 项目来源:opencv入门 项目目的:识别传入的银行卡照片中的卡号 难点:银行卡上会有一些干扰项,如何排除这些干扰项,并且打印正确的号码是一个问题 最终效果如上图 实现这样的功能需要以下几个步骤…...
Windows API 开发桌面应用程序,在窗口按下鼠标左键不放可以拖图,并且拖图期间鼠标图标变成手掌
在Windows API中,要实现鼠标左键按下并拖动以移动窗口中的某个图形,并且同时改变鼠标图标为“手掌”形状(这通常指的是“拖动”或“移动”的图标),你需要执行几个步骤。 以下是一个基本的步骤指南,用于在W…...
Docker的网络管理
文章目录 一、Docker容器之间的通信1、直接互联(默认Bridge网络)1.1、Docker安装后默认的网络配置1.2、创建容器后的网络配置1.2.1、首先创建一个容器1.2.2、ip a 列出网卡变化信息1.2.3、查看新建容器后的桥接状态 1.3、容器内安装常见的工具1.4、容器间…...
【数据结构】平衡二叉树左旋右旋与红黑树
平衡二叉树左旋右旋与红黑树 平衡二叉树 定义 平衡二叉树是二叉搜索树的一种特殊形式。二叉搜索树(Binary Search Tree,BST)是一种具有以下性质的二叉树: 对于树中的每个节点,其左子树中的所有节点都小于该节点的值…...
2024蓝桥杯初赛决赛pwn题全解
蓝桥杯初赛决赛pwn题解 初赛第一题第二题 决赛getting_startedbabyheap 初赛 第一题 有system函数,并且能在bss上读入字符 而且存在栈溢出,只要过掉check函数即可 check函数中,主要是对system常规获取权限的参数,进行了过滤&…...
大模型多轮问答的两种方式
前言 大模型的多轮问答难点就是在于如何精确识别用户最新的提问的真实意图,而在常见的使用大模型进行多轮对话方式中,我接触到的只有两种方式: 一种是简单地直接使用 user 和 assistant 两个角色将一问一答的会话内容喂给大模型,…...
【无标题】1877A
足球锦标赛中有 n支球队。每对队伍匹配一次。每场比赛结束后,Pak Chanek收到两个整数作为比赛结果,即两队在比赛中得分的数量。一支球队的效率等于本队每场比赛的总进球数减去对手每场比赛的总进球数。 比赛结束后,Pak Dengklek会计算每支球…...
直播美颜工具解析:美颜SDK核心技术与性能优化方法
本篇文章,小编将深入解析直播美颜SDK的核心技术及其性能优化方法,以期为开发者提供有价值的参考。 一、美颜SDK核心技术 1.实时人脸检测与识别 美颜SDK的核心技术之一是实时人脸检测与识别。这项技术基于深度学习算法,能够快速、准确地识别…...
YOLOv10开源,高效轻量实时端到端目标检测新标准,速度提升46%
前言 实时目标检测在自动驾驶、机器人导航、物体追踪等领域应用广泛,近年来,YOLO 系列模型凭借其高效的性能和实时性,成为了该领域的主流方法。但传统的 YOLO 模型通常采用非极大值抑制 (NMS) 进行后处理,这会增加推理延迟&#…...
如何解决访问网站时IP被限制的问题?
在互联网上,用户可能会面临一个令人困扰的问题——当尝试访问某个特定的网站时,却发现自己的IP地址被该网站屏蔽。 IP地址被网站屏蔽是一个相对常见的现象,而导致这种情况的原因多种多样,包括恶意行为、违规访问等。本文将解释IP地…...
springboot城市美发管理系统的设计与实现-计算机毕业设计源码71715
摘 要 信息化社会内需要与之针对性的信息获取途径,但是途径的扩展基本上为人们所努力的方向,由于站在的角度存在偏差,人们经常能够获得不同类型信息,这也是技术最为难以攻克的课题。针对城市美发管理系统等问题,对城市…...
微软 Windows 10 22H2 发布可选更新 19045.4474,修复窗口显示问题等
微软今天面向 Windows 10 22H2 版本,发布了 KB5037849 非安全可选更新,用户安装后版本号升至 Build 19045.4474。 IT之家 5 月 30 日消息,微软今天面向 Windows 10 22H2 版本,发布了 KB5037849 非安全可选更新,用户安…...
代码随想录算法训练营第五十三天 | 309.最佳买卖股票时机含冷冻期、714.买卖股票的最佳时机含手续费
309.最佳买卖股票时机含冷冻期 视频讲解:动态规划来决定最佳时机,这次有冷冻期!| LeetCode:309.买卖股票的最佳时机含冷冻期_哔哩哔哩_bilibili代码随想录 解题思路 1. dp[i][0] 第i天持有股票的状态 dp[i][1]第i天不持股的状…...
Polar Web【中等】反序列化
Polar Web【中等】反序列化 Contents Polar Web【中等】反序列化思路&探索EXPPHP生成PayloadGET传递参数 运行&总结 思路&探索 一个经典的反序列化问题,本文采用PHP代码辅助生成序列字符串的方式生成 Payload 来进行手动渗透。 打开站点,分析…...
linux之kylin系统nginx的安装
一、nginx的作用 1.可做高性能的web服务器 直接处理静态资源(HTML/CSS/图片等),响应速度远超传统服务器类似apache支持高并发连接 2.反向代理服务器 隐藏后端服务器IP地址,提高安全性 3.负载均衡服务器 支持多种策略分发流量…...
rknn优化教程(二)
文章目录 1. 前述2. 三方库的封装2.1 xrepo中的库2.2 xrepo之外的库2.2.1 opencv2.2.2 rknnrt2.2.3 spdlog 3. rknn_engine库 1. 前述 OK,开始写第二篇的内容了。这篇博客主要能写一下: 如何给一些三方库按照xmake方式进行封装,供调用如何按…...
盘古信息PCB行业解决方案:以全域场景重构,激活智造新未来
一、破局:PCB行业的时代之问 在数字经济蓬勃发展的浪潮中,PCB(印制电路板)作为 “电子产品之母”,其重要性愈发凸显。随着 5G、人工智能等新兴技术的加速渗透,PCB行业面临着前所未有的挑战与机遇。产品迭代…...
鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院查看报告小程序
一、开发环境准备 工具安装: 下载安装DevEco Studio 4.0(支持HarmonyOS 5)配置HarmonyOS SDK 5.0确保Node.js版本≥14 项目初始化: ohpm init harmony/hospital-report-app 二、核心功能模块实现 1. 报告列表…...
ServerTrust 并非唯一
NSURLAuthenticationMethodServerTrust 只是 authenticationMethod 的冰山一角 要理解 NSURLAuthenticationMethodServerTrust, 首先要明白它只是 authenticationMethod 的选项之一, 并非唯一 1 先厘清概念 点说明authenticationMethodURLAuthenticationChallenge.protectionS…...
前端开发面试题总结-JavaScript篇(一)
文章目录 JavaScript高频问答一、作用域与闭包1.什么是闭包(Closure)?闭包有什么应用场景和潜在问题?2.解释 JavaScript 的作用域链(Scope Chain) 二、原型与继承3.原型链是什么?如何实现继承&a…...
pikachu靶场通关笔记22-1 SQL注入05-1-insert注入(报错法)
目录 一、SQL注入 二、insert注入 三、报错型注入 四、updatexml函数 五、源码审计 六、insert渗透实战 1、渗透准备 2、获取数据库名database 3、获取表名table 4、获取列名column 5、获取字段 本系列为通过《pikachu靶场通关笔记》的SQL注入关卡(共10关࿰…...
Spring AI与Spring Modulith核心技术解析
Spring AI核心架构解析 Spring AI(https://spring.io/projects/spring-ai)作为Spring生态中的AI集成框架,其核心设计理念是通过模块化架构降低AI应用的开发复杂度。与Python生态中的LangChain/LlamaIndex等工具类似,但特别为多语…...
网站指纹识别
网站指纹识别 网站的最基本组成:服务器(操作系统)、中间件(web容器)、脚本语言、数据厍 为什么要了解这些?举个例子:发现了一个文件读取漏洞,我们需要读/etc/passwd,如…...
MySQL 主从同步异常处理
阅读原文:https://www.xiaozaoshu.top/articles/mysql-m-s-update-pk MySQL 做双主,遇到的这个错误: Could not execute Update_rows event on table ... Error_code: 1032是 MySQL 主从复制时的经典错误之一,通常表示ÿ…...
