博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[NOIP2002]字串变换 T2 双向BFS
阅读量:6830 次
发布时间:2019-06-26

本文共 1699 字,大约阅读时间需要 5 分钟。

题目描述

        已知有两个字串  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。

输入

        第一行为两个字符串,第二行至文件尾为变换规则

   AB

   A1B1  \

    A2B2    |->   变换规则

     ...  ...  /    所有字符串长度的上限为  20。

输出

        若在  10  步(包含  10步)以内能将  A变换为变换为B  ,则输出最少的变换步数;否则输出"NO ANSWER!"

样例输入

abcd xyz abc xu ud y y yz

样例输出

3

(⊙o⊙)…

大概并不是很简单,我以为BFS就行...

但是.....

时间超限...

尴尬,GG

(⊙o⊙)…双向BFS弄完了就只剩下一点string的东西了

#include
#include
#include
#include
#include
#include
#include
using namespace std;const int N=11;struct Node{ string s; int d;};map
m1,m2;queue
q1,q2;string change[N][2],ss;Node s1,s2;int k,ans;int dbfs(){ while(!q1.empty()||!q2.empty()) { if(q1.front().d+q2.front().d>10) break; s1=q1.front(); int len=s1.s.length(); for(int i=0;i
>s1.s>>s2.s; if(s1.s==s2.s){cout<<0<
>change[k][0]>>change[k][1])k++; cout<
<

RE的,谁大概给我看看为什么...

#include
#include
#include
#include
#include
using namespace std;typedef struct{
string s;int d;}point;map
m1,m2;queue
q1,q2;string change[6][2],ss;point s1,s2;int k,ans; bool dbfs(){ while(!q1.empty()&&!q2.empty()){ if(q1.front().d+q2.front().d>10)return false; s1=q1.front(); int len=s1.s.length(); for(int i=0;i
>s1.s>>s2.s; if(s1.s==s2.s){cout<<0<
>change[k][0]>>change[k][1])k++; if(dbfs())cout<
<

AC的...大概我还是不明白为什么RE...

 

转载于:https://www.cnblogs.com/Winniechen/p/6710308.html

你可能感兴趣的文章
Exception loading sessions from persistent storage 这个问题的解决
查看>>
python dns server开源列表 TODO
查看>>
Go中的make和new的区别
查看>>
javascript 面向对象编程(工厂模式、构造函数模式、原型模式)
查看>>
最小二乘法多项式拟合的Java实现
查看>>
ubuntu下安装tomcat
查看>>
Excel两列查找重复值
查看>>
纯CSS实现Div高度根据自适应宽度(百分百调整)
查看>>
Azkaban学习之路 (一)Azkaban的基础介绍
查看>>
域名绑定云主机
查看>>
Linux: grep多个关键字“与”和“或”
查看>>
CAS5.2x单点登录(二)cas服务器连接数据库
查看>>
Android tess_two Android图片文字识别
查看>>
高负载微服务系统的诞生过程
查看>>
maven生命周期理解
查看>>
JS基础之传参(值传递、对象传递)
查看>>
(转)几种经典的hash算法
查看>>
Content Security Policy (CSP) 介绍
查看>>
DevExpress去除多国语言包
查看>>
numpy初始化
查看>>