Codevs 1099 字串变换
2024-09-02 11:50:27
题目描述 Description
已知有两个字串 A$, B$ 及一组字串变换的规则(至多6个规则):
A1$ -> B1$
A2$ -> B2$
规则的含义为:在 A$中的子串 A1$ 可以变换为 B1$、A2$ 可以变换为 B2$ …。
例如:A$='abcd' B$='xyz'
变换规则为:
‘abc’->‘xu’ ‘ud’->‘y’ ‘y’->‘yz’
则此时,A$ 可以经过一系列的变换变为 B$,其变换的过程为:
‘abcd’->‘xud’->‘xy’->‘xyz’
共进行了三次变换,使得 A$ 变换为B$。
输入描述 Input Description
输入格式如下:
A$ B$
A1$ B1$ \
A2$ B2$ |-> 变换规则
... ... /
所有字符串长度的上限为 20。
输出描述 Output Description
若在 10 步(包含 10步)以内能将 A$ 变换为 B$ ,则输出最少的变换步数;否则输出"NO ANSWER!"
样例输入 Sample Input
abcd xyz
abc xu
ud y
y yz
样例输出 Sample Output
3
数据范围及提示 Data Size & Hint
hehe
/*
宽搜,将每个规则都用一用就好了
字符串方面的函数不会用不大好办
*/
#include<iostream>
#include<cstdio>
#include<cstring>
#include<map>
using namespace std;
map<string,bool>m;
string d[],e,a[],b[];
int tim[];
int main(){
int h=,t=;
cin>>d[]>>e;
tim[]=;
int n=;
while(cin>>a[n]>>b[n])n++;//变换规则
while(tim[h]<&&tim[h]!=){//到状态h需要的步数
for(int i=;i<n;i++){//尝试每一种规则
int pos=d[h].find(a[i]);//找到可替换的字符串在字符串中的位置
while(pos!=d[h].npos){//npos表示不存在,也就是只要存在可替换的字符串,就去替换它
d[t]=d[h];
d[t].replace(pos,a[i].size(),b[i]);
tim[t]=tim[h]+;
if(d[t]==e){cout<<tim[h]<<endl;return ;}
if(m.find(d[t])==m.end())m[d[t++]]=true;
pos=d[h].find(a[i],pos+);
}
}
h++;
}
cout<<"NO ANSWER!"<<endl;
return ;
}
最新文章
- TCP/IP 和 Socket 的关系
- 1007. Maximum Subsequence Sum (25)
- IOS 7 Study - Manipulating a Navigation Controller’s Array of View
- u-boot移植为tiny6410步骤
- 无法捕获的异常:MissingMethodException
- MD5和SHA512Managed ——哈希算法
- JS表格排序
- C#利用 HttpWebRequest 类发送post请求,出现“套接字(协议/网络地址/端口)只允许使用一次”问题
- WinForm DotNetBar 动态添加DataGridView
- hdu2795(线段树)
- hadoop datanode 启动出错
- Mockito-简单使用使用
- JS实现数组去重(重复的元素只保留一个)
- nodejs使用log4js记录日志
- 【linux】环境变量
- 解决pycharm安装包过程出现的问题:module &#39;pip&#39; has no attribute &#39;main&#39;
- Spring Security构建Rest服务-1203-Spring Security OAuth开发APP认证框架之短信验证码登录
- 国内maven仓库地址资源汇总
- ECMAScript5之Object学习笔记(一)
- C语言实现---学生成绩管理系统
热门文章
- iOS8需要兼容的内容
- EasyDarwin开源流媒体服务器gettimeofday性能优化(3000万/秒次优化至8000万次/秒)
- mybatis学习总结(三)——增删查改
- 7-5 打印选课学生名单(25 point(s)) 【排序】
- Ubuntu 14.04 下 android studio 安装 和 配置【转】
- Chrome 插件 Vimium——让你脱离鼠标
- Js中获取显示器、浏览器以及窗口等的宽度与高度的方法
- PL/SQL DEVELOPER执行计划的查看
- codeforces 466C. Number of Ways 解题报告
- win10环境变量path误删(windows找不到文件‘%windir%\systempropertiesadvanced.exe’)的解决办法