杭電2087 剪花布條

2021-06-29 13:25:26 字數 729 閱讀 6906

kmp演算法:

字串題,題目要求便是求一大串字元裡面有幾個小字串。

用到的是kmp演算法。

kmp演算法思想大致就是:設長字串為string str,小字串為string s。1》首先對s中的字元進行自己匹配,找到有相同字元的地方,並記錄下來該位置k。2》開始迴圈對比str與s中的字元。當出現兩字串中字元不相同的位置時,對迴圈i進行加k即可。

移動位數 = 已匹配的字元數 - 對應的部分匹配值

**如下:

#include#include#include#includeusing namespace std;

int solve(int j,string s)

} if(k==0)

ans=j+1;//接收後要返回乙個移動位置j+1;要是不+1,當j=0時會死迴圈,因為for後面沒有++i,所以每個條件下 //都應有個+條件。

return ans;

}int main()

{ string str;

string s;

while (cin>>str)

{ if(str=="#")

break;

cin>>s;

int j=0;

int flag=0,num=0,t=0;

for(int i=0;i

最後分享乙個連線:

這上面的思想很好理解,比書上的**還好理解。

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字元有多少個,布條的花紋也有多少種花樣。...