HDU 2087 KMP不可重疊的匹配 花布條

2022-05-22 10:30:10 字數 707 閱讀 7717

題意:

用兩個字串分別表示布條和圖案,問能從該布條上剪出多少這樣的圖案。

分析:毫無疑問這也是用kmp匹配,關鍵是一次匹配完成後,模式串應該向後滑動多少。

和上一題 hdu 1686 不同,兩個圖案肯定不能在母串中有交叉的部分,所以當匹配成功一次後,應當滑動整個模式串的長度。

和上一題比,**幾乎不變,只是

j = next[j]; 變為 j = 0;

1 #include 2 #include 3

4const

int maxn = 1000 + 10;5

char

p[maxn], q[maxn];

6int

next[maxn]; 78

void get_next(char* p, intl)9

20else k =next[k];21}

22}2324

int kmp(char* p, int lenp, char* q, int

lenq)

2534

else j =next[j];

35if(j ==lenq)

3640}41

return

ans;42}

4344

int main(void)45

5960

return0;

61 }

**君

Hdu 2087 kmp演算法的運用

description 一塊花布條,裡面有些圖案,另有一塊直接可用的小飾條,裡面也有一些圖案。對於給定的花布條和小飾條,計算一下能從花布條中盡可能剪出幾塊小飾條來呢?input 輸入中含有一些資料,分別是成對出現的花布條和小飾條,其布條都是用可見ascii字元表示的,可見的ascii字元有多少個,布...

剪花布條 HDU 2087 KMP模板

一塊花布條,裡面有些圖案,另有一塊直接可用的小飾條,裡面也有一些圖案。對於給定的花布條和小飾條,計算一下能從花布條中盡可能剪出幾塊小飾條來呢?input 輸入中含有一些資料,分別是成對出現的花布條和小飾條,其布條都是用可見ascii字元表示的,可見的ascii字元有多少個,布條的花紋也有多少種花樣。...

剪花布條 HDU 2087(kmp演算法)

一塊花布條,裡面有些圖案,另有一塊直接可用的小飾條,裡面也有一些圖案。對於給定的花布條和小飾條,計算一下能從花布條中盡可能剪出幾塊小飾條來呢?input 輸入中含有一些資料,分別是成對出現的花布條和小飾條,其布條都是用可見ascii字元表示的,可見的ascii字元有多少個,布條的花紋也有多少種花樣。...