洛谷 P1032 字串变换

题目:

  • 有公式,转链接

题解:

  • 坑点重重... ...
  1. 要用bfs (第一个搜到的就是答案,节约时间)
  2. 一个字符串可能对应着许多不同的字符串

  3. bfs模版里pop时vis数组也要相应的清零
  4. 用map去重
  5. 记得无解的情况
  6. 一个串中可能有多个可替换串

#include <iostream>
#include <cstdio>
#include <string>
#include <map>
#include <queue>
#include <cstdlib>
using namespace std;struct Cha {string x, y;} cha[10];
struct Obj {string s; int step;};
int n;
string a, b;
map<string, string> mp;
map<string, bool> vis;void bfs()
{queue<Obj> que;Obj tmp;tmp.s = a, tmp.step = 0;que.push(tmp), vis[a] = 1;while(!que.empty()){Obj now = que.front();  que.pop();for(int i = 1; i <= n; i++){int last = 0;while(1){string t = cha[i].x;int pos = now.s.find(t, last);if(pos == -1) break;else last = pos + 1;tmp.s = now.s.substr(0, pos) + cha[i].y + now.s.substr(pos + t.size(), now.s.size() - (pos + t.size()));tmp.step = now.step + 1;if(tmp.step > 10) continue;if(tmp.s == b) {cout << tmp.step; exit(0);}if(!vis[tmp.s]){vis[tmp.s] = 1;que.push(tmp);}}}}
}int main()
{freopen("P1032.in", "r", stdin);freopen("P1032.out", "w", stdout);cin >> a >> b;while(cin >> cha[++n].x) cin >> cha[n].y;bfs();cout << "NO ANSWER!";return 0;
}

转载于:https://www.cnblogs.com/BigYellowDog/p/11167427.html

洛谷 P1032 字串变换相关推荐

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

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

  2. 洛谷P1032 字串变换

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

  3. P1032 字串变换(bfs)

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

  4. 洛谷1279 字串距离

    题目描述 设有字符串X,我们称在X的头尾及中间插入任意多个空格后构成的新字符串为X的扩展串,如字符串X为"abcbcd",则字符串"abcb□cd"," ...

  5. P1032 字串变换

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

  6. 洛谷P1279 字串距离 (动态规划)

    题目描述 设有字符串X,我们称在X的头尾及中间插入任意多个空格后构成的新字符串为X的扩展串,如字符串X为"abcbcd",则字符串"abcb□cd"," ...

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

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

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

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

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

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

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

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

最新文章

  1. Opencv cv2.KalmanFilter 鼠标跟踪
  2. Python 笔试集:什么时候 i = i + 1 并不等于 i += 1?
  3. 量子遗传算法原理与MATLAB仿真程序
  4. python(matplotlib4)——Scatter 散点图,Bar柱状图(方向:向上,向下),柱状图添加注释
  5. vue webpack 自动打开页面_vue中webpack技术详解
  6. [蓝桥杯][2013年第四届真题]核桃的数量-枚举(水题)
  7. lamda获取参数集合去空_(转)Java8使用lambda表达式进行集合的遍历
  8. Oracle表空间大小的限制和DB_BLOCK_SIZE的概念
  9. 基于JAVA+SpringMVC+Mybatis+MYSQL的网上书城
  10. 未定义标识符CV_HAAR_SCALE_IMAGE
  11. dom兼容性问题3 元素操作
  12. rk3399_android7.1关于看门狗驱动的实现原理说明
  13. Codeforces Education Round 11
  14. 190602每日一句
  15. OpenStack创业“五虎将”分化
  16. UML建模与软件工程
  17. OSC802 USB虚拟示波器开箱与测评
  18. mysql服务什么意思_mysql数据库服务是什么意思
  19. PipeCAD 简介
  20. 数仓工具—Hive源码之SQL解析Antlr入门(7)

热门文章

  1. 0302-软件工程第一次作业
  2. 10倍提升应用性能的10个建议 (理论篇)
  3. Java Thread.yield详解
  4. dom4j 解析xml文件demo
  5. 百度地图坐标系统应用
  6. httpclient java多线程_Apache HttpClient4.5多个HTTP请求使用多线程执行
  7. python 新建一列_创建一个空数据框并在python中填充创建的列
  8. redis数据类型-set集合
  9. python自动测试方法_python接口自动化测试二十一:类和方法
  10. python怎么命名未知数_用Python解方程