洛谷P1032 字串變換

2022-02-27 09:02:24 字數 1300 閱讀 2306

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

a1 -> b1

a2 -> b2

規則的含義為:在 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!"

輸入樣例#1:

abcd xyz

abc xu

ud y

y yz

輸出樣例#1:

簡述一下題意:給出乙個起始串,乙個目標串,以及一堆變換方法.要求出能否在10步以內將起始串轉換為目標串.

顯然是直接廣搜或者深搜.主要麻煩的就是處理這個字串的變換.

為了方便起見,這裡使用了stl自帶的string型別.這裡借鑑 copy 了一下洛谷的題解,學習了一下string類函式的用法.

下面主要講一下string類函式吧.

其實我覺得這道題並不是很難,但是這個轉換字元的操作比較麻煩,所以主要就是寫好這個轉換字元的函式就好了.

#includeusing namespace std;

int cnt = 0;

string st, ed;

string c1[10], c2[10];

int step[100000];

string q[100000];

map vis;

string change(string s,int i,int j)

void bfs()

for(int i=0;i> st >> ed;

while(cin >> c1[++cnt]) cin >> c2[cnt];

cnt--;

bfs();

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 及一組字串變換的規則 至多 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所需的最小的轉換次...