剪花布條(kmp)

2021-10-06 07:40:02 字數 839 閱讀 8395

problem description

一塊花布條,裡面有些圖案,另有一塊直接可用的小飾條,裡面也有一些圖案。對於給定的花布條和小飾條,計算一下能從花布條中盡可能剪出幾塊小飾條來呢?

input

輸入中含有一些資料,分別是成對出現的花布條和小飾條,其布條都是用可見ascii字元表示的,可見的ascii字元有多少個,布條的花紋也有多少種花樣。花紋條和小飾條不會超過1000個字元長。如果遇見#字元,則不再進行工作。

output

輸出能從花紋布中剪出的最多小飾條個數,如果一塊都沒有,那就老老實實輸出0,每個結果之間應換行。

sample input

abcde a3 aaaaaa aa #

sample output

0 3

這個題有個小坑,就是在將模式串+'#'+匹配串相加判斷next陣列是否與模式串相等的時候需要加乙個條件(看**),因為你輸入的串裡面包括了所有的字元,舉個例子: 模式串:#sos#  匹配串:sos#  本來這個是不能匹配的,在模式串+'#'+匹配串變形後 為#sos##sos# 滿足nxt[i]==m(見**)的條件

思路:求出nxt陣列,再找到模式字串的時候需要指標i跳轉至i+=m(m為模式串的長度)

code:

#includeusing namespace std;

int ans;

vector cal_nxt(string s)

return nxt;

}int main()

else i++;

} cout<} return 0;

}

剪花布條 KMP

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

剪花布條 (KMP)

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

剪花布條 (KMP)

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