HDU2087 剪花布條(貪心 KMP)

2021-09-27 16:17:46 字數 926 閱讀 8456

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

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

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

a3aaaaaa aa03

給你兩個串s和t,問你s中最多不重疊的包含了多少個t串?

直接用kmp演算法,用t模式串去匹配s主串即可,但是當匹配成功的時候要看看當前匹配點離上乙個匹配點是不是距離差》=t的長度。

那麼我們按上面的找法確實可以找到不重疊的串t的各個匹配點,我們如何保證這個結果就是最多匹配t串的結果?其實這個問題等價於 給你n個長度相同的時間區間,然後要你找出最多的不重疊的那些時間區間?對於這個問題就是貪心的從左到右依次選取,證明過程也很簡單。

#include#include#include#include#include#include#include#include#include#include#includeusing namespace std;

typedef long long ll;

typedef double ld;

const int maxn=1000+100;

char s[maxn],t[maxn];

int next[maxn];

int n,m;

int cnt,last;

void getfail()}}

}int main()

return 0;

}

hdu 2087 剪花布條

include include includeusing namespace std const int maxn 1004 char str maxn str1 maxn int main printf d n count return 0 此題主要是strstr 函式的應用!據說也可以用kmp來...

hdu 2087 剪花布條

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

HDU 2087剪花布條

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