正题

评测记录:https://www.luogu.org/recordnew/lists?uid=52918&pid=P1032


题目大意

给若干个变化规则,表示A中的axa_xax​子串可以变化为bxb_xbx​中的子串,求至少要多少次变化才可以变为B子串。


解题思路

暴力广搜用mapmapmap库判重。


codecodecode

#include<iostream>
#include<cstdio>
#include<string>
#include<map>
#include<queue>
using namespace std;
queue<string> q;
map<string,int> d;
string s,ans,a[7],b[7];
int n;
bool cmps(string s,string a,int first,int len)
{for(int i=0;i<len;i++)if(s[first+i]!=a[i]) return false;//cout<<s<<' '<<a<<' '<<first<<' '<<len<<endl;return true;
}
int bfs()
{q.push(s);d[s]=0;while(!q.empty()){string x=q.front();if(d[q.front()]>=10) {q.pop();continue;}for(int j=1;j<=n;j++)for(int i=0;i<x.size();i++)if(cmps(x,a[j],i,a[j].size())){x.erase(i,a[j].size());x.insert(i,b[j]);if(!d[x]){d[x]=d[q.front()]+1;q.push(x);if(x==ans) return d[x];}x=q.front();}q.pop();     }return -1;
}
int main()
{cin>>s>>ans;n=1;if(s==ans){printf("0");return 0;}while(cin>>a[n]>>b[n]) n++;n--;int answer=bfs();if(answer==-1) printf("NO ANSWER!");else printf("%d",answer);
}

P1032-字串变换【bfs】相关推荐

  1. P1032 字串变换(bfs)

    https://www.luogu.org/problemnew/show/P1032 题目描述 已知有两个字串A,BA,B及一组字串变换的规则(至多66个规则): A 1-> B 1 A 2 ...

  2. 洛谷P1032字串变换题解--zhengjun

    题目描述 已知有两个字串A,BA,BA,B及一组字串变换的规则(至多666个规则): A1A_1A1​ −-−> B1B_1B1​ A2A_2A2​ −-−> B2B_2B2​ 规则的含义 ...

  3. 洛谷P1032 字串变换

    字符串的题目一般都很恶心,特别是当你妄图只用原生c语言的char去做的时候. string类虽然方便,但是相较于char慢很多.可是慢所带来的好处就是可以方便的完成很多操作.例如用string去实现这 ...

  4. 【题解】luogu p1032 字串变换

    总结: 1.bfs的模板没有掌握好 2.string s 的时候可以用s[m]=x 将s字符串中的m位置的字符改变成x字符 一道简单的bfs #include<bits/stdc++.h> ...

  5. P1032 字串变换

    题面:https://www.luogu.org/problem/P1032 本题中需熟练掌握string类型的库函数: string a,b; a.find(b,pos)为 从pos开始找b第一次出 ...

  6. 广度优先搜索——字串变换(洛谷 P1032)

    题目选自洛谷P1032 题意已经把做法写得特别露骨了...最小步数,最多6个变换规则....广搜自不必说,不仅可以寻找解而且还能判断步数(根据广搜首解最优的性质可以得到). 用queue来进行广搜,需 ...

  7. 字串变换(洛谷-P1032)

    题目描述 已知有两个字串 A, B 及一组字串变换的规则(至多6个规则): A1 -> B1 A2 -> B2 规则的含义为:在 A$中的子串 A1 可以变换为 B1.A2 可以变换为 B ...

  8. P1032 [NOIP2002 提高组] 字串变换

    展开 题目背景 本题疑似错题,不保证存在靠谱的多项式复杂度的做法.测试数据非常的水,各种做法都可以通过,不代表算法正确.因此本题题目和数据仅供参考. 题目描述 已知有两个字串 A,BA,B 及一组字串 ...

  9. 1099 字串变换 2002年NOIP全国联赛提高组

    1099 字串变换 2002年NOIP全国联赛提高组  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 黄金 Gold 题解 题目描述 Description 已知有两个字串 A ...

  10. [COGS 0065][NOIP 2002] 字串变换

    65. [NOIP2002] 字串变换 ★★   输入文件:string.in   输出文件:string.out   简单对比 时间限制:1 s   内存限制:128 MB [问题描述] 已知有两个 ...

最新文章

  1. ps怎么把一个颜色替换成另一个颜色_图标设计,用PS制作一款小清新的拟物时钟...
  2. 将csv文件导入mysql
  3. HTML上传文件的多种方式
  4. 他奶奶的,我要再不写技术文章,找工作都没有说服力!
  5. 01-2.C(C程序编译步骤-gcc 编译过程)
  6. wampServer配置WWW根目录遇到的坑
  7. .NET 分布式自增Id组件(解决自动分配机器Id、时间回拨问题)
  8. N元语法模型的数据稀疏问题解决方法之一:Good-Turing平滑
  9. Floyd算法及其应用
  10. 京东618期间将累计发放百亿消费券
  11. OpenShift 4 - 创建Service Mesh运行环境
  12. 20165306 Exp9 Web安全基础
  13. Linux 快捷键大全
  14. PHP全部导出excel方法与批量导出超简单方法!
  15. nested exception is java.lang.NumberFormatException: For input string: NaN
  16. 程序员工资真的高吗?
  17. Google I/O 大会强势回归!2021 中文直播全攻略看这里
  18. 用Matlab搞了个小工具,以后给你女朋友的证件照换底色再也不用发愁了
  19. 理财通app的设计与实现(六)
  20. python 入门书籍-入门python有什么好的书籍推荐?

热门文章

  1. mysql innodb事务中_MySQL InnoDB如何保证事务特性示例详解
  2. php 自定义菜单 openid,微信公众平台开发(99) 自定义菜单获取OpenID
  3. mysql innodb 多线程插入_mysql innodb 并发插入问题,包大量死锁错误
  4. 文件共享服务器第二部,第二章-构建Samba文件共享服务器.docx
  5. 提升对前端的认知,不得不了解Web API的DOM和BOM
  6. pytorch tensor 初始化_PyTorch简明笔记[1]-Tensor的初始化和基本操作
  7. [C++11]decltype在泛型编程中的使用举例
  8. [C++STL]C++实现unordermap容器和unorderset容器
  9. [蓝桥杯2018初赛]星期一-日期计算
  10. java世博会,反应原生失去的世博会