已知有兩個字串a,ba,ba,b及一組字串變換的規則(至多666個規則):a1a_1a1 ->b1 b_1b1
a2a_2a2 -> b2b_2b2
規則的含義為:在 aaa中的子串 a1a_1a1 可以變換為b1 b_1b1,a2a_2a2 可以變換為 b2b_2b2 …。
例如:a=abcd,b=xyz,
變換規則為:
abc→xu,ud→y,y→yz
則此時,aaa可以經過一系列的變換變為bbb,其變換的過程為:
abcd→xud→xy→xyz。
共進行了333次變換,使得aaa變換為bbb。
輸入格式如下:aaa bbb
a1a_1a1 b1b_1b1
a2a_2a2 b2b_2b2 |-> 變換規則
… … /
所有字串長度的上限為202020。
輸出至螢幕。格式如下:若在101010步(包含101010步)以內能將aaa變換為bbb,則輸出最少的變換步數;否則輸出"no answer!"
abcd xyzabc xu
ud y
y yz
#include
#include
#include
#include
using
namespace std;
string str_st,str_en;
//串 a b
string a[7]
, b[7]
;//可轉化形式
queue que;
//存放待匹配字串
queue<
int> step;
//與que佇列對應 對應字串所對應的匹配
mapint> mp;
//剪枝用 (字串是否已經被匹配過)
int n;
intbfs()
mp[que.
front()
]=1;
//標記被搜尋的字串
for(
int i =
0; i < n; i++
)//遍歷轉換方式
}//是否退出迴圈
if(bo)
break;}
//出隊操作
que.
pop();
step.
pop();
//返回步數隊尾元素 即最小步數
洛谷 P1032 字串變換
洛谷 p1032 字串變換 題目描述 已知有兩個字串 a,b 及一組字串變換的規則 至多6個規則 a1 b1 a2 b2 規則的含義為 在 a 中的子串 a1 可以變換為 b1 a2 可以變換為 b2 例如 a abcd b xyz 變換規則為 abc xu ud y y yz 則此時,a 可以經過...
洛谷 P1032 字串變換
已知有兩個字串 a,b 及一組字串變換的規則 至多 6 個規則 a1 b1 a2 b2 規則的含義為 在a 中的子串 a1 可以變換為 b1 a2可以變換為 b2 例如 a abcd bb xyz 變換規則為 abc xu ud y y yz 則此時,a 可以經過一系列的變換變為 b 其變換的過程為...
洛谷P1032字串變換
題目描述 已知有兩個字串a,b a,b 及一組字串變換的規則 至多6個規則 a1 b1 a 1 b1 a2 b2 a 2 b2 規則的含義為 在a的子串中a1 a 1可以變成b1 b 1,a2 a 2可以變成b2 b 2 求a a 變成b role presentation b b所需的最小的轉換次...