洛谷 P1032 字串變換

2021-08-18 03:47:23 字數 1435 閱讀 4535

洛谷 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...