洛谷 P1032 字串變換

2021-10-02 14:27:48 字數 1544 閱讀 9816

已知有兩個字串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 xyz

abc 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所需的最小的轉換次...