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