題目描述 description
已知有兩個字串 a,b
及一組字串變換的規則(至多6個規則): a1−
>b1
a2−>b2
規則的含義為:在 a$中的子串 a1可以
變換為b
1 、a2可以
變換為b
2 …。
例如:a=′
abcd
′b=』xyz』
變換規則為:
『abc』->『xu』 『ud』->『y』 『y』->『yz』
則此時,a可以
經過一系
列的變換
變為b ,其變換的過程為:
『abcd』->『xud』->『xy』->『xyz』
共進行了三次變換,使得 a變換
為b。輸入描述 input description
輸入格式如下:ab
a1b1
\ a2b2
|-> 變換規則
… … /
所有字串長度的上限為 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
【noip2002t2】
沒調出來。。。。特判了。。。
只是想看看雙向bfs長什麼樣= =
**扔上吧。。
#include
#include
#include
#include
#include
#include
using
namespace
std;
const
int maxn=100000+10;
int tot;
string s,t;
struct node
m[maxn];
queue
q1;queue
q2;mapstep1;
mapstep2;
string ss;
string jh(string ss1,string ss2,int x,int len)
int bfs()}}
if(!q2.empty())}}
}}int main()
else
if(ans==0||ans>10) puts("no answer!");
else
printf("%d",ans);
return
0;}
P1032 字串變換 字串
已知有兩個字串 a,b 及一組字串變換的規則 至多6個規則 a1 b1 a2 b2 規則的含義為 在 a 中的子串 a1 可以變換為 b1 a2 可以變換為 b2 例如 a abcd b xyz 變換規則為 abc xu ud y y yz 則此時,a 可以經過一系列的變換變為 b,其變換的過程為 ...
codevs2180 字串距離
題目描述 description 設有字串x,我們稱在x的頭尾及中間插入任意多個空格後構成的新字串為x的擴充套件串,如字串x為 abcbcd 則字串 abcb cd a bcbcd 和 abcb cd 都是x的擴充套件串,這裡 代表空格字元。如果a1是字串a的擴充套件串,b1是字串b的擴充套件串,a...
洛谷1032 字串變換
已知有兩個字串 a b 及一組字串變換的規則 至多6個規則 a1 b1 a2 b2 規則的含義為 在 a 中的子串 a1 可以變換為 b1 a2 可以變換為 b2 例如 a abcd b xyz 變換規則為 abc xu ud y y yz 則此時,a 可以經過一系列的變換變為 b 其變換的過程為 ...