洛谷 P1032 字串變換

2021-08-21 11:29:12 字數 938 閱讀 8591

已知有兩個字串 a,b 及一組字串變換的規則(至多 6 個規則):

a1 -> b1

a2 -> b2

規則的含義為:在a 中的子串 a1 可以變換為 b1 ,a2可以變換為 b2…。

​例如: a =』 abcd 』 bb =』 xyz 』

變換規則為:

『 abc 』->『 xu 』 『 ud 』->『 y 』 『 y 』->『 yz 』

則此時, a 可以經過一系列的變換變為 b ,其變換的過程為:

『 dabcd 』->『 xud 』->『 xy 』->『 xyz 』

共進行了 3 次變換,使得 a 變換為 b 。

這是一道廣搜題,以原串為起點,遍歷所有變換規則,如果能變換,那麼把變換後的字串存入佇列,同時存入變換到該字串需要幾步。需要注意的是,字串可能會有重複,可以使用set或者map去重。對於同乙個字串同乙個變換規則可能會有多個變換結果,都需要考慮。

#include#include#include#include#includeusing namespace std;

string a,b;

string from[10],to[10];

int min=20;

struct str;

void bfs(int k));

int pos;

while (!q.empty())

for (int i=0; i> a >> b;

int k=0;

while (cin >> from[k] >> to[k]) k++; //變化規則數沒有規定

// cin >> k;

// for (int i=0; i> from[i] >> to[i];

bfs(k);

return 0;

}

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

洛谷 P1032 字串變換

題意 給乙個初始字串和乙個目標字串,然後有最多6個規則,從前乙個字串可以變到後乙個字串。詢問初始字元轉能否經過這些規則的變換最終變為目標字串。可以的話輸出最小的步數,否則輸出 no answer 思路 因為規則很少,直接暴力bfs所有可能的狀態就好了,然後用乙個map來判重。偷點懶,直接用strin...