codevs1099字串变换(Bfs)
2016-04-23 11:00
281 查看
/* 最少步数问题 妥妥的Bfs 很显然队列里存的是串(可能存个数也可以 就像8数码那样) 然后每次队首元素弄出来 能换的都换一遍 最后每次换完的新串入队前先判断到头了没 最后说一句 String大法好0.0 */ #include<iostream> #include<cstdio> #include<cstring> #include<cstdlib> using namespace std; int ans,n=1,head,tail,t[2000050]; string s1,s2,sl[10],sr[10],q[2000050]; int main() { cin>>s1>>s2; int i,j,k; while(cin>>sl >>sr )n++; n--;//处理变换规则 q[++tail]=s1; while(t[++head]<10&&head<=tail) { for(i=1;i<=n;i++)//每一种规则都尝试 反正数据小 任性 for(j=0;j<=q[head].length()-1;j++)//可能有好几个地方可以换 所以枚举一下 if(q[head].compare(j,sl[i].length(),sl[i])==0)//如果包含给出的串 { q[++tail]=q[head]; t[tail]=t[head]+1; q[tail].replace(j,sl[i].length(),sr[i]);//将找到的字串入队 然后换掉 if(q[tail]==s2) { cout<<t[tail]; return 0; } } } cout<<"NO ANSWER!"; return 0; }
相关文章推荐
- Google停止支持32位Linux版Chrome
- 用实例讲解栈和队列(C++)
- gedit自动补全
- 一个价值百万的创业教训
- ?|USACO 5.4.4|Betsy's Tour|漫游小镇|插头DP
- bzoj 3430: [Usaco2014 Jan]Ski Course Rating
- 算法学习笔记之百钱买百鸡问题
- JDK、JRE、JVM三者间的关系
- 如何在未知链表中找到一个中间节点
- 机器学习------资源分享
- 15.RDD 创建内幕解析
- Linq的优缺点
- 微信支付Native扫码支付模式二之CodeIgniter集成篇
- Hadoop 远程连接伪分布式Hadoop异常
- android 6.0权限动态申请
- bzoj 1923: [Sdoi2010]外星千足虫 (高斯消元)
- 富文本编辑器Ueditor的使用
- PHP无刷新之后显示图片
- hihocoder 1291 : Building in Sandbox (离线并查集)
- 解决控件点击两次的方法