時間限制: 1 sec 記憶體限制: 128 mb
提交: 25 解決: 16
[提交][狀態][討論版]
[edit] [testdata]輸入乙個主串和乙個子串,若匹配成功,則找出匹配的趟數和在子串在主串中的位置,若匹配不成功,則輸出0
輸入兩個字串
輸出匹配的趟數和位置
ababcabcacbababcac
3 6
#include #include #define sizemax 105typedef struct
sqstring;
void getnext(sqstring s,int next)
int main()
,ci=1;
char c[sizemax],d[sizemax];
gets(c);
gets(d);
strassign(s,c); //建立串
strassign(t,d);
getnext(t,next); //得到next值
int k=kmp(s,t,next,ci); //solve
printf("%d %d\n",ci,k);
return 0;}/*
acabaabaabcacaabc
abaabcac
4 6*/
KMP模式匹配
1,若第i個開始不等,移動到第i個。直接將sub 0 與src 5 比較。01 2345 678a bcab abca abca bx 2,sub 2 與src 5 比較。01 2345 678a bcab abca abca b 看大神的 理解不了,還是按自己的思路寫乙個,繁瑣還是起碼好理解就行。...
KMP模式匹配
有些演算法,適合從它產生的動機,如何設計與解決問題這樣正向地去介紹。但kmp演算法真的不適合這樣去學。最好的辦法是先搞清楚它所用的資料結構是什麼,再搞清楚怎麼用,最後為什麼的問題就會有恍然大悟的感覺。我試著從這個思路再介紹一下。大家只需要記住一點,pmt是什麼東西。然後自己臨時推這個演算法也是能推出...
KMP模式匹配
屌毛演算法導致我直接罷工兩天沒心情做題。kmp就是用來解決匹配問題,比如字串中找重複子串。核心就是乙個next陣列 含義 next i 即 以i為結尾的非字首字串 和 字首 能夠匹配的最大長度。沒有的話可以為0 abaabaaaa next 5 就是因為aba和 aba 相匹配,為3 如果直接列舉n...