kmp演算法得到數列的next值
阿新 • • 發佈:2018-12-16
#include <iostream> #include<string> using namespace std; void GetNext(int T[], int next[]) //求模式T的next值 { int i,j,len; next[0] = -1; for (j=1;T[j]!='\0';len--) //依次求next[j] { for (len=j-1; len>=1; len--)//相等字串的最大長度為j-1 { for (i=0; i<len; i++) //依次比較T[0]~T[len-1]與T[j-len]~T[j-1] if (T[i] !=T[j-len+i]) break; if (i==len) { next[j]=len;break; cout<<next[j]; } } if (len<1) next[j] = 0; //其他情況,無相等子串 } } void main() { int a[15] = {0, 1, 2, 3, 4, 0, 2, 3, 4, 1, 2, 3, 4, 4, 5}; int next[80]; GetNext(a, next); cout<<next[0]; system("pause"); }