明明寫的和課本一樣,但是在pta就是不正確,參考了別人的答案,發現有乙個地方不一樣記錄一下!
#include
#include
#include
int next1[
1000];
//next1[j] = k,表示當t[i] != p[j]時,j指標的下乙個位置。
//求字串在主串中第一次出現的位置
void
get_next1
(char t[
1000],
int next1,
int len)
else
j=next1[j];}
}int
main()
// int flag=1;
get_next1
(s1,next1,len1)
;int i,j;
for(i=
1; i<=len1; i++
)printf
("%3d"
,next1[i]);
printf
("\n");
i=0,j=0;
while
(ielse}if
(i==len1)
else
printf
(" 0");
// if(flag==0)
// printf(" 0");
return0;
}
關於KMP演算法的next陣列
kmp的next陣列求法是很不容易搞清楚的一部分,也是最重要的一部分。我這篇文章就以我自己的感悟來慢慢推導一下吧!保證你看完過後是知其然,也知其所以然。如果你還不知道kmp是什麼,請先閱讀上面的鏈結,先搞懂kmp是要幹什麼。下面我們就來說說kmp的next陣列求法。kmp的next陣列簡單來說,假設...
關於KMP中next陣列的計算
目標字串 abcdefgh 模式字串 abcab模式字串 abcab例子 abcab的next陣列計算方法下標0 1234 模式字串ab cabnext陣列01 112 1.下標為 0 的初值這裡設定為 0 2.下標為 1 的初值這裡設定為 1 3.下標為 2 的初值的計算步驟 1 這裡假設 i 2...
KMP演算法 next陣列
通過上文完全可以對kmp演算法的原理有個清晰的了解,那麼下一步就是程式設計實現了,其中最重要的就是如何根據待匹配的模版字串求出對應每一位的最大相同前字尾的長度。我先給出我的 1 void makenext const char p,int next 214 next q k 15 16 現在我著重講...