洛谷 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: 複製
題目分析:
本題是一道基礎的廣搜題,主要是一些字串的處理跟判重.在這裡記錄一下**,主要是方便自己以後檢視這些字串處理的方法.程式**:
#include
#include
#include
#include
#include
#include
#include
#include
using
namespace std;
struct node};
string s,t;
vector < pair
>v;
inline
bool
bfs(
)for
(register
int i=
0;isize()
;++i)
if(u.s.
find
(v[i]
.first)!=-
1)for(
register
int j=u.s.
find
(v[i]
.first)
;jlength()
;j=u.s.
find
(v[i]
.first,j+1)
)if(count
(t))}}
return
false;}
intmain()
洛谷 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所需的最小的轉換次...
洛谷 P1032 字串變換
題意 給乙個初始字串和乙個目標字串,然後有最多6個規則,從前乙個字串可以變到後乙個字串。詢問初始字元轉能否經過這些規則的變換最終變為目標字串。可以的話輸出最小的步數,否則輸出 no answer 思路 因為規則很少,直接暴力bfs所有可能的狀態就好了,然後用乙個map來判重。偷點懶,直接用strin...