洛谷p1032 字串變換 (bfs)

2021-10-23 03:08:08 字數 1009 閱讀 2669

題目概述

字串的子串(必須連續與子串行不同)有至多六種變化規則,若在10步(包含10步)以內能將a變換為b,則輸出最少的變換步數;否則輸出"no answer!"

題目分析

ac**

#include

using

namespace std;

mapint> mp;

//從前出現過的字串不能再次出現(廣度搜尋樹,第一次搜到的一定是最短路徑)

string chg[6]

[2];

//六種變化規則的字串

string a,b;

//初始字串 與 目標字串

int len[10]

;// 每乙個字串的長度

int ans;

//記錄最後結果

int k =0;

//變換規則的數量

struct node

;queuequ;

void

bfs()

mp[next.str]=1

;//進行標記

int now_len = next.str.

length()

;for

(int i=

0;i)//k種變化規則 }}

}if(ans<=

10&&ans!=0)

//預設如果不發生變換就相等的話,也是輸出沒有答案!

else cout<<

"no answer!";}

intmain()

k=i;

//記錄輸入的規則個數

for(

int j=

0;j) len[j]

= chg[j][0

].length()

;bfs()

;}

**這裡重點用的取子串的函式是string庫里的 substr(a,b)注意引數a指的是起始index,b指的是擷取子串的長度!

BFS 洛谷 P1032 字串變換

年輕人切忌旋入技術細節漩渦,那是無底之洞 zeo 基礎bfs加一堆字串處理細節 逐個比較是否可替換 替換時把字元拆成三段 前 要替換的 後 根據string 特性 前 替換的 後 可得操作完畢後串 步數壓入佇列繼續bfs map 進行判重 坑的不行 寫的想吐 沒感到任何技術提公升 include i...

洛谷P1032 字串變換 bfs

題意 給定乙個原字串和目標字串,以及幾個字串變換的規則。問能否根據這幾個規則在十步之內把原字串變為目標字串。思路 bfs,佇列維護字串和所經過的步驟這樣乙個二元組而不是簡單的字串。每一次取出乙個字串,用所給的規則進行變換得到新的字串。由於字串中可能有多次匹配,所以用vector存每一次匹配的開始位置...

洛谷 P1032 字串變換(BFS,字串)

這題要注意的點 keng 挺多的 題目描述 已知有兩個字串a,b及一組字串變換的規則 至多6個規則 a 1 b 1 a 2 b 2 規則的含義為 在 a中的子串 a 1可以變換為 b 1,a 2 可以變換為 b 2 例如 a abcd b xyz 變換規則為 abc xu ud y y yz 則此時...