搜索算法(算法竞赛、蓝桥杯)--双向BFS字串变换

1、B站视频链接:B19 双向BFS 字串变换_哔哩哔哩_bilibili

题目链接:[NOIP2002 提高组] 字串变换 - 洛谷

3276d3799c1d4d69a6a4bb058bd704c7.png

c7219b034ab84a38becd49230d504890.png

#include <iostream>
#include <queue>
#include <unordered_map>
using namespace std;const int N=7;
int n;
string A,B,a[N],b[N];int extend(queue<string>&q, unordered_map<string,int>&da,unordered_map<string,int>&db, string a[], string b[]){int m=q.size(); while(m--){                       //每次扩展一层auto f=q.front(); q.pop();      //父串出队for(int i=0; i<n; i++)          //枚举规则for(int j=0; j<f.size(); j++) //枚举父串中的位置if(f.substr(j,a[i].size())==a[i]){string s=f.substr(0,j)+b[i]+f.substr(j+a[i].size());if(da.count(s)) continue;if(db.count(s)) return da[f]+db[s]+1;da[s]=da[f]+1;  //变换步数q.push(s);      //子串入队}}return 11;
}
int bfs(){if(A==B) return 0;queue<string> qa,qb;unordered_map<string,int> da,db;qa.push(A),qb.push(B); da[A]=db[B]=0;int step=10, t;while(step--){if(qa.size()<=qb.size()) t=extend(qa,da,db,a,b);else t=extend(qb,db,da,b,a);if(t<=10) return t;}return 11;
}
int main(){cin>>A>>B;while(cin>>a[n]>>b[n]) n++;int t=bfs();t==11?printf("NO ANSWER!"):printf("%d",t);
}

685e3229d37b4bdc904decd79ae68f49.png

6d2639d64ba94562b73fefb27a9cae7a.png

 

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

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

相关文章

opencascade c#例程解析

1.编译 将msvc.bat文件拖入vs2022的x64 native tools&#xff0c;即可 2.about.xaml <Windowxmlns"http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x"http://schemas.microsoft.com/winfx/2006/xaml"x:Class"IE_WPF_WinForms…

前后端项目-part03

文章目录 5.4.4 机构名称5.4.4.1 创建实体类Company5.4.4.2 创建实体类CompanyMapper5.4.4.3 创建实体类CompanyService5.4.4.4 创建实体类CompanyController5.4.4.5 后端测试5.4.4.6 修改basic.js5.4.4.7 修改course.vue5.4.4.8 测试5.4.5 课程标签5.4.5.1 效果5.4.5.2 修改co…

后台管理系统: 权限管理

权限管理 角色:一家企业而言&#xff1a;BOSS、运维、销售、程序员 权限:超级管理员&#xff08;BOSS&#xff09;&#xff0c;是有权利操作整个项目的所有的模块 test&#xff08;新媒体&#xff09;&#xff0c;只能首页、商品管理者一部分菜单数据 admin&#xff1a;…

ClickHouse 指南(三)最佳实践 -- 主键稀疏索引

在ClickHouse主索引的实用介绍 ClickHouse release 24.1, 2024-01-30 1、简介 在本指南中&#xff0c;我们将深入研究ClickHouse索引。我们将详细说明和讨论: ClickHouse中的索引与传统的关系数据库管理系统有何不同ClickHouse是如何构建和使用表的稀疏主索引的什么是在Clic…

Curator基本使用

文章目录 1. 基本操作1.1 建立连接1.2 创建结点1.3 查询结点查询数据查询子结点查看结点信息 1.4 修改结点普通修改带乐观锁的修改 1.5 删除删除单个结点删除带子结点的结点必须成功的删除带回调函数的删除 2. 监听器事件2.1 NodeCache单一结点连续监听2.2 PathChildrenCache监…

nginx平滑升级,信号使用,分割日志

信号 kill -l 看信号大全 nginx -h 中可以看到的信号较少 s signal : send signal to a master process: stop, quit, reopen, reload 可以使用man手册来查看详细的信号 如果没安装&#xff0c;去源码包里找到man文件 man 路径/nginx.8 不加路径打不开man帮助 st…

docker小知识:linux环境安装docker

安装必要软件包&#xff0c;执行如下命令 yum install -y yum-utils device-mapper-persistent-data lvm2目的是确保在安装 Docker 之前&#xff0c;系统已经安装了必要的软件包和服务&#xff0c;以支持 Docker 的正常运行。设置yum源&#xff0c;添加Docker官方的CentOS存储…

javasript基础

1.HTML是网页的结构 css是网页的外观 而JavaScript是页面的行为 2.javascript支持吧静态页面(HTML)转换为支持用户交互并响应相应事件的动态页面 3.typeof&#xff08;&#xff09;返回当前操作数的数据类型 parseInt()将字符串转换为整型,parseFloat()将字符串转换为浮点型 …

对Redis锁延期的一些讨论与思考

上一篇文章提到使用针对不同的业务场景如何合理使用Redis分布式锁&#xff0c;并引入了一个新的问题 若定义锁的过期时间是10s&#xff0c;此时A线程获取了锁然后执行业务代码&#xff0c;但是业务代码消耗时间花费了15s。这就会导致A线程还没有执行完业务代码&#xff0c;A线程…

【Redis】基本操作 - 安装与配置

文章目录 1. 安装Redis1.1 Ubuntu / Debian1.2 CentOS / RHEL1.3 macOS1.4 Windows 2. 启动和停止Redis2.1 Ubuntu / Debian2.2 CentOS / RHEL2.3 macOS2.4 Windows 3. 配置文件3.1 常见配置项 4. 修改配置文件5. 重启Redis5.1 Ubuntu / Debian5.2 CentOS / RHEL5.3 macOS5.4 W…

C语言统计成绩

目录 描述 输入描述&#xff1a; 输出描述&#xff1a; 问题描述 解决方案 总结 描述 输入n科成绩&#xff08;浮点数表示&#xff09;&#xff0c;统计其中的最高分&#xff0c;最低分以及平均分。 数据范围&#xff1a;1≤&#xfffd;≤100 1≤n≤100 &#xff0c; …

k8s Pod 进阶(资源限制,健康检查探针详解,启动退出,pod生命周期,)

目录 资源限制 查看资源控制字段 Pod 资源限制方式 Pod 和容器中定义资源请求和限制的具体字段 CPU资源单位 内存资源单位 示例 健康检查&#xff08;探针&#xff09; 探针的三种规则 存活探针&#xff08;Liveness Probe&#xff09; 就绪探针&#xff08;Readines…

thetwo--TO BE BETTER!!!

紧随上一篇&#xff0c;我们已经设置好了一些参数&#xff0c;下面我们来定义模型&#xff1a; 代码如下&#xff1a; import typing import tensorflow as tf import theone def get_vgg19_model(layers):"""初始化并创建vgg19模型:param layers::return:&qu…

vscode与vue/react环境配置

一、下载并安装VScode 安装VScode 官网下载 二、配置node.js环境 安装node.js 官网下载 会自动配置环境变量和安装npm包(npm的作用就是对Node.js依赖的包进行管理)&#xff0c;此时可以执行 node -v 和 npm -v 分别查看node和npm的版本号&#xff1a; 配置系统变量 因为在执…

机器学习:朴素贝叶斯算法(Python)

一、朴素贝叶斯算法的实现 naive_bayes_classifier.py import numpy as np import collections as cc # 集合的计数功能 from scipy.stats import norm # 极大似然估计样本的均值和标准方差 from data_bin_wrapper import DataBinsWrapperclass NaiveBayesClassifier:"…

Python分支和循环结构及其应用(文末送书)

一、分支结构 应用场景 我们写的Python代码都是一条一条语句顺序执行&#xff0c;这种代码结构通常称之为顺序结构。然而仅有顺序结构并不能解决所有的问题。 if语句的使用 在Python中&#xff0c;要构造分支结构可以使用if、elif和else关键字。所谓关键字就是有特殊含义的…

SpringCloud(17)之SpringCloud Stream

一、Spring Cloud Stream介绍 Spring Cloud Stream是一个框架&#xff0c;用于构建与共享消息系统连接的高度可扩展的事件驱动微服务。该框架提供了一个灵活的编程模型&#xff0c;该模型建立在已经建立和熟悉的Spring习惯用法和最佳实践之上&#xff0c;包括对持久发布/子语义…

腾讯云4核8G服务器优惠价格表(轻量+CVM)

腾讯云4核8G服务器多少钱&#xff1f;轻量应用服务器4核8G12M带宽一年446元、646元15个月&#xff0c;云服务器CVM标准型S5实例4核8G配置价格15个月1437.3元&#xff0c;5年6490.44元&#xff0c;标准型SA2服务器1444.8元一年&#xff0c;在txy.wiki可以查询详细配置和精准报价…

ChatGPT带火的HBM是什么?

“ChatGPT是人工智能领域的iPhone时刻&#xff0c;也是计算领域有史以来最伟大的技术之一。” 英伟达创始人兼CEO黄仁勋此前这样盛赞ChatGPT。 ChatGPT突然爆火&#xff0c;对大算力芯片提出了更高更多的要求。近日&#xff0c;据韩国经济日报报道&#xff0c;受惠于ChatGPT&am…

[rust] 10 project, crate, mod, pub, use: 项目目录层级组织, 概念和实战

文章目录 一 项目目录层级组织概念1.1 cargo new 创建同名 的 Project 和 crate1.2 多 crate 的 package1.3 mod 模块1.3.1 创建嵌套 mod1.3.2 mod 树1.3.3 用路径引用 mod1.3.3.1 使用绝对还是相对? 1.3.4 代码可见性1.3.4.1 pub 关键字1.3.4.2 用 super 引用 mod1.3.4.3 用 …