題目描述
已知有兩個字串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所需的最小的轉換次數
輸入a1
b1a 1b
1a2b
2 a2b
2a3b
3 a3b
3….
輸出
最小的轉換次數
例子
abaaaba abcdaba
a bb d
d ee f
f gg c
輸出
8
解題思路
廣度優先搜尋,注意佇列裡面字串判重(利用map),熟悉string::find和string::replace用法
#include
#include
#include
#include
using
namespace
std;
struct e;
int n=0;
string ori[10],dis[10];
queue
q;string a,b;
map map1;
bool bfs()
// coutif(!map1.count(tmpstr))}}
}}
return0;}
/*s1.find(s2,pos);
s1.replace(pos,s2.size(),s3);
*/int main(int argc, char** argv)
洛谷 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 字串變換
題意 給乙個初始字串和乙個目標字串,然後有最多6個規則,從前乙個字串可以變到後乙個字串。詢問初始字元轉能否經過這些規則的變換最終變為目標字串。可以的話輸出最小的步數,否則輸出 no answer 思路 因為規則很少,直接暴力bfs所有可能的狀態就好了,然後用乙個map來判重。偷點懶,直接用strin...