這道題困了我一天…以下是我的**(解析見注釋)
#include
using
namespace std;
intmain()
}for
(i=0
;ilength()
;i++)}
for(i=
0;i<=words.
length()
-find.
length()
;i++
)//為什麼需要字串長度相減?後面**中words[i+j]的目的就是對應著find往後推j位
//所以說,最後的幾位(長度差)不需要再遍歷了(已經搜尋完整了)
//注意!退出j的迴圈時j+1了一次,後面用j的時候全部需要小心!!!卡卡卡!if(
(j==find.
length()
)&&(words[j+i]
==' '
||i+j==words.
length()
))}if
(cnt==0)
//輸出結果
else
return0;
}
LuoguP1032 字元變換(BFS)
題目鏈結為 思路 看到資料比較小,而且最多有6個規則,就可以用搜尋去做了,我用的bfs,大體思路如下 定義結構體表示狀態,其中包括字串str和當前步數num 並定義該結構體的佇列 用map實現string到int的對映,用來記錄某個狀態是否到達過,若到達過,標記為1,否則為0 bfs函式中就是bfs...
luogu P1098 字串的展開
演算法 模擬 難度 noip 題解 你只需要看明白題意就好啦!p2 k表示同乙個字元要連續填充k個 eg input 3 1 1 z l k d h output z l k d h 如下 include include include include include include include...
luogu 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,其變換的過程為 ...