洛谷 P1032 字串变换
洛谷 P1032 字串变换
题目:
- 有公式,转链接
题解:
- 坑点重重... ...
- 要用bfs (第一个搜到的就是答案,节约时间)
一个字符串可能对应着许多不同的字符串
- bfs模版里pop时vis数组也要相应的清零
- 用map去重
- 记得无解的情况
一个串中可能有多个可替换串
#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 字串变换相关推荐
- 洛谷P1032字串变换题解--zhengjun
题目描述 已知有两个字串A,BA,BA,B及一组字串变换的规则(至多666个规则): A1A_1A1 −-−> B1B_1B1 A2A_2A2 −-−> B2B_2B2 规则的含义 ...
- 洛谷P1032 字串变换
字符串的题目一般都很恶心,特别是当你妄图只用原生c语言的char去做的时候. string类虽然方便,但是相较于char慢很多.可是慢所带来的好处就是可以方便的完成很多操作.例如用string去实现这 ...
- P1032 字串变换(bfs)
https://www.luogu.org/problemnew/show/P1032 题目描述 已知有两个字串A,BA,B及一组字串变换的规则(至多66个规则): A 1-> B 1 A 2 ...
- 洛谷1279 字串距离
题目描述 设有字符串X,我们称在X的头尾及中间插入任意多个空格后构成的新字符串为X的扩展串,如字符串X为"abcbcd",则字符串"abcb□cd"," ...
- P1032 字串变换
题面:https://www.luogu.org/problem/P1032 本题中需熟练掌握string类型的库函数: string a,b; a.find(b,pos)为 从pos开始找b第一次出 ...
- 洛谷P1279 字串距离 (动态规划)
题目描述 设有字符串X,我们称在X的头尾及中间插入任意多个空格后构成的新字符串为X的扩展串,如字符串X为"abcbcd",则字符串"abcb□cd"," ...
- 【题解】luogu p1032 字串变换
总结: 1.bfs的模板没有掌握好 2.string s 的时候可以用s[m]=x 将s字符串中的m位置的字符改变成x字符 一道简单的bfs #include<bits/stdc++.h> ...
- 广度优先搜索——字串变换(洛谷 P1032)
题目选自洛谷P1032 题意已经把做法写得特别露骨了...最小步数,最多6个变换规则....广搜自不必说,不仅可以寻找解而且还能判断步数(根据广搜首解最优的性质可以得到). 用queue来进行广搜,需 ...
- 字串变换(洛谷-P1032)
题目描述 已知有两个字串 A, B 及一组字串变换的规则(至多6个规则): A1 -> B1 A2 -> B2 规则的含义为:在 A$中的子串 A1 可以变换为 B1.A2 可以变换为 B ...
- P1032 [NOIP2002 提高组] 字串变换
展开 题目背景 本题疑似错题,不保证存在靠谱的多项式复杂度的做法.测试数据非常的水,各种做法都可以通过,不代表算法正确.因此本题题目和数据仅供参考. 题目描述 已知有两个字串 A,BA,B 及一组字串 ...
最新文章
- Opencv cv2.KalmanFilter 鼠标跟踪
- Python 笔试集:什么时候 i = i + 1 并不等于 i += 1?
- 量子遗传算法原理与MATLAB仿真程序
- python(matplotlib4)——Scatter 散点图,Bar柱状图(方向:向上,向下),柱状图添加注释
- vue webpack 自动打开页面_vue中webpack技术详解
- [蓝桥杯][2013年第四届真题]核桃的数量-枚举(水题)
- lamda获取参数集合去空_(转)Java8使用lambda表达式进行集合的遍历
- Oracle表空间大小的限制和DB_BLOCK_SIZE的概念
- 基于JAVA+SpringMVC+Mybatis+MYSQL的网上书城
- 未定义标识符CV_HAAR_SCALE_IMAGE
- dom兼容性问题3 元素操作
- rk3399_android7.1关于看门狗驱动的实现原理说明
- Codeforces Education Round 11
- 190602每日一句
- OpenStack创业“五虎将”分化
- UML建模与软件工程
- OSC802 USB虚拟示波器开箱与测评
- mysql服务什么意思_mysql数据库服务是什么意思
- PipeCAD 简介
- 数仓工具—Hive源码之SQL解析Antlr入门(7)