題意:
用兩個字串分別表示布條和圖案,問能從該布條上剪出多少這樣的圖案。
分析:毫無疑問這也是用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字元有多少個,布條的花紋也有多少種花樣。...