字串變換(BFS)

2021-10-18 16:28:54 字數 1015 閱讀 4498

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

a1a1 -> b1b1

a2a2 -> b2b2

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

例如:a=』abcd』 b=』xyz』

變換規則為:

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

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

『abcd』->『xud』->『xy』->『xyz』

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

輸入格式

輸入格式如下:

a b

a1 b1 \

a2 b2 |

-> 變換規則

… … /

所有字串長度的上限為 20。

輸出格式

若在 10 步(包含 10步)以內能將 a 變換為 b ,則輸出最少的變換步數;否則輸出」no answer!」

輸入樣例:

abcd xyz

abc xu

ud y

y yz

輸出樣例:

3

超時乙個點,這題得用雙向bfs,後面完善

#include

using

namespace std;

const

int n=10;

int n;

string a,b;

string x[n]

,y[n]

;int

bfs(string u)}}

}return-1

;}intmain()

if(bfs(a)!=-

1)cout<<

bfs(a)

cout<<

"no answer!"

}

字串變換

現有乙個字典,同時給定字典中的兩個字串s和t,給定乙個變換,每次可以改變字串中的任意乙個字元,請設計乙個演算法,計算由s變換到t所需的最少步數,同時需要滿足在變換過程中的每個串都是字典中的串。給定乙個string陣列dic,同時給定陣列大小n,串s和串t,請返回由s到t變換所需的最少步數。若無法變換...

字串變換

字串變換 相信經過這個學期的程式設計訓練,大家對於字串的操作已經掌握的相當熟練了。今天,徐老師想測試一下大家對於字串操作的掌握情況。徐老師自己定義了1,2,3,4,5這5個引數分別指代不同的5種字串操作,你需要根據傳入的引數,按照徐老師的規定,對輸入字串進行格式轉化。徐老師指定的操作如下 1.表示全...

P1032 字串變換 bfs

評測記錄 給若干個變化規則,表示a中的a xa x ax 子串可以變化為b xb x bx 中的子串,求至少要多少次變化才可以變為b子串。暴力廣蒐用map mapma p庫判重。include include include include include using namespace std q...