p1032 字串變換
題目描述
已知有兩個字串 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:
3————————————————
#include
#include
#include
#include
#include
#include
using
namespace std;
map < string,
int> mp;
intmain()
n--; queue q;
queue<
int> s;
q.push
(a);
s.push(0
);while
(!q.
empty()
)if(s.front()
==10
) string t = q.
front()
;if(mp.
count
(t))
mp[t]=1
;for
(int i=
1;i<=n;i++)}
q.pop()
; s.
pop();
}cout<<
"no answer!"
;return0;
}
落谷試煉場 P1032 字串變換
思路 使用bfs,遍歷所有替換的情況,值得注意的一點是,對同乙個字串可能在不同位置都能替換,一開始沒有考慮到這一點 c include include include include using namespace std const int maxn 12 string fa maxn fb ma...
P1032 字串變換
思路 採用bfs 我們遍歷字串a的每個字元,判斷當前字串i位置之後可不可以替換,如果可以替換,我們就把替換後的字串 a 放入佇列。如果出現的我們想要的字串,根據bfs的性質,那麼就直接記錄此時的步數。1 include 2 include 3 include 4 include 5 include ...
P1032 字串變換
迭代加深難題 右手進入傳送門 大意是這樣的 給定兩個字串a,b以及至多六個變換規則 規則指a1 b1,a2 b2,在a中的子串 a1可以變換為b1,a2可以變換為 b2 求最少變換步數,若在10步 包含10步 以內能將a變換為b,則輸出最少的變換步數 否則輸出 no answer 看到題目要求的10...