NOIP2002 字串變換

2022-08-03 02:39:14 字數 1084 閱讀 1760

一道難得的搜尋好題,題目大意很簡單,這裡不再贅述,主要說一下思路

當然普通的bfs答案是正確的,但是在ch上評測會tle乙個點,所以我們採用效率更高的雙向bfs

從初始狀態和目標狀態分別搜尋,建立兩個佇列,分別擴充套件狀態。如果乙個佇列擴充套件的狀態已經被另乙個佇列搜尋過了,那麼便出現答案了。

另外,使用map可以對字串進行標記,replace可以自動替換字串,詳見**。

1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 

8using

namespace

std;

9string a,b,aa[10],bb[10

];10

int n=1

;11 queueq1;

12 queueq2;

13 mapvis;

14 mapdis;

15string

now,noww,neww;

16int

main()

29while((!q1.empty())&&(!q2.empty()))

47 vis[neww]=1

;48 dis[neww]=d+1;49

q1.push(neww);50}

51 noww[m]='!'

;52}53

}54}55

else

72 vis[neww]=2

;73 dis[neww]=d+1;74

q2.push(neww);75}

76 noww[m]='!'

;77}78

}79}80

}81 puts("

no answer!");

82return0;

83 }

ac code

NOIP2002 字串變換 題解

字串變換 字串的題以後還是用string吧,很多函式賊有用。思路 雙向bfs,判斷中途相遇,兩個map即可。關鍵是處理字串的替換,找子串可以用string的find 函式,替換可以用string 的 replace 函式.include include include include include...

NOIP 2002 提高組 字串變換

題目描述 已知有兩個字串 a,b 及一組字串變換的規則 至多6個規則 a1 b1 a2 b2 規則的含義為 在 a 中的子串 a1 可以變換為 b1 a2 可以變換為 b2 例如 a abcd b xyz 變換規則為 abc xu ud y y yz 則此時,a 可以經過一系列的變換變為 b,其變換...

noip2002 字串變換 (雙向寬搜,交替擴充套件)

p1124字串變換 accepted 標籤 搜尋 搜尋與剪枝 noip提高組2002 已知有兩個字串 a b 及一組字串變換的規則 至多6個規則 a1 b1 a2 b2 規則的含義為 在 a 中的子串 a1 可以變換為 b1 a2 可以變換為 b2 例如 a abcd b xyz 變換規則為 abc...