目的

  1. 刷完100AC (最近很不舒服,写博客耗时啊
  2. 记录第一个字符串的题目

参考

https://www.luogu.org/blog/user20197/solution-p1032

代码

#include<cstdio>
#include<map>
#include<queue>
#include<string>
#include<iostream>
#define MAX 20+9
using namespace std; struct node{
string s;
int dis;
}; string original[MAX];
string translate[MAX];
int n;
map <string, int> m;//判重
string x,y;
int ans; string trans(const string &str, int i, int j)//在str的第i个位置使用第j种手法改变
{
string ans = "";
if(i+original[j].length() > str.length() ) return ans;//???有必要? for(int k = 0; k < original[j].length() ; k++)
if(str[i+k] != original[j][k]) return ans;//判断是否可以变换 ans = str.substr(0, i);//逐个拼接
ans += translate[j];
//ans += str.substr(i+original[j].length());
ans += str.substr(i+original[j].length() , str.length() );
return ans;
} void bfs() {
queue <node> q;
node str;
str.s = x;
str.dis = 0;
q.push(str); while(!q.empty() ) {
node u = q.front() ;
q.pop() ;
if(m[u.s ]) continue; if(u.s == y) {
ans = u.dis ;
break ;
}
m[u.s ] = 1; string tmp;
for(int i = 0; i < u.s.length() ; i++) {
for(int j = 0; j < n; j++) {
tmp = trans(u.s , i, j);
if(tmp != "") {
node e;
e.s = tmp;
e.dis = u.dis +1;
q.push(e);
}
}
}
}
if (ans > 10 || ans == 0)// 不懂这题目,为啥0步不行
cout << "NO ANSWER!" << endl;
else
cout << ans << endl;
} int main() {
cin>>x>>y;
while(cin>>original[n]>>translate[n]) n++;
bfs();
return 0;
}

[luogu普及] ---P1032 字串变换的更多相关文章

  1. luogu题解P1032字串变换--BFS+STL:string骚操作

    题目链接 https://www.luogu.org/problemnew/show/P1032 分析 这题本来很裸的一个BFS,发现其中的字符串操作好烦啊.然后就翻大佬题解发现用STL中的strin ...

  2. luogu P1032 字串变换

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

  3. 洛谷 P1032 字串变换题解

    题目链接:https://www.luogu.org/problem/P1032 题目描述 已知有两个字串A,BA,B及一组字串变换的规则(至多66个规则): A_1A1​ ->B_1B1​ A ...

  4. 洛谷 P1032 字串变换

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

  5. P1032 字串变换 字符串BFS

    题目描述 已知有两个字串A,BA,B及一组字串变换的规则(至多66个规则): A_1A1​ ->B_1B1​ A_2A2​ -> B_2B2​ 规则的含义为:在 AA中的子串 A_1A1​ ...

  6. [洛谷P1032] 字串变换

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

  7. 【搜索】P1032 字串变换

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

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

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

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

    题目传送门 我即使是死了,钉在棺材里了,也要在墓里,用这腐朽的声带喊出 STL大法好 这题最麻烦的其实是处理字符串,真正的搜索部分我个人认为也就只有橙题或黄题的难度.而处理字符串,正如前面所说,STL ...

随机推荐

  1. Scala——面向对象和函数式编程语言

    Scala Scala是一门运行时基于JVM的编程语言,具备函数式编程和面向对象特点. 基本知识 basics 任意词均可作为符号名,对于关键词,以反引号包裹,避免使用下划线,避免带美元符的名字. 声 ...

  2. WPF度量系統

    和Winform不同,WPF的度量單位不是像素,而是設備無關單位DIU,其大小總是1/96吋 那麽,WPF中一個寬度爲96的按鈕,到底是多少個像素呢? 答:取決於系統DPI. 計算公式爲:實際像素 = ...

  3. 【sqli-labs】 less1 GET - Error based - Single quotes - String(GET型基于错误的单引号字符型注入)

    GET方式提交id参数 添加单引号,出现报错,爆出数据库名称和部分SQL语句 http://localhost/sqli/Less-1/?id=1' 使用order by猜测字段数,用#注释掉后面li ...

  4. Django逻辑关系

    title: Django学习笔记 subtitle: 1. Django逻辑关系 date: 2018-12-14 10:17:28 --- Django逻辑关系 本文档主要基于Django2.2官 ...

  5. Nginx服务器部署SSL证书手机不信任解决方法

    在wosign申请证书并按指南正确部署证书后,如果发现PC浏览器访问正常,手机或safari浏览器提示证书不受信任,那肯定是在文件传输解压过程中导致证书文件中出现空格.乱码之类的情况,这里教您轻松四步 ...

  6. 死磕itchat源码--core.py

    core.py文件中的Core类定义了itchat的所有接口.且,仅仅是定义了接口,全部在component包中实现重构.其用法如下表述: 缺省 源码如下: # -*- encoding: utf-8 ...

  7. 切割窗口url

    var keyWords=location.href.split("?")[1].split("&"); console.log(keyWords) f ...

  8. phpMyAdmin使用教程

    ---恢复内容开始--- wamp中自带了管理MySQL的phpMyAdmin,可用来本机测试,服务器维护,虚拟主机用户管理MySQL. 登录需记住servername,username,passwo ...

  9. C++string和int的相互转化

    本方法主要利用sstream头文件中的方法来进行转换 1.int转成string #include <iostream> #include<string> #include&l ...

  10. 【ABCD组】Scrum meeting 1

    前言 第1次会议在6月13日由组长在教9 405召开. 主要对下一步的工作进行说明安排,时长90min. 任务分配 姓名 当前阶段任务 完成情况 所遇困难 贡献时间 下阶段任务 朱石景 编写登录界面代 ...