#include"stdio.h"
#include"string.h"
void get_next(char T[], int next[])
{//" abcaabbcabcaabdab"
int i=1;
next[1] = 0;
int j = 0;
int length=strlen(T)-1;
while( i<length){
if(j==0 || T[i] == T[j]){
++i; ++j;
next[i] = j;
}
else
j = next[j];
}
}
int main()
{
char s[]=" abcaabbcabcaabdab";
int n[18];
get_next(s,n);
int i;
for(i=1;i<18;i++)
printf("%d ",n[i]);
return 0;
}
uj5u.com熱心網友回復:
統計字符出現的位置?uj5u.com熱心網友回復:
。百度kmp演算法。。。。。uj5u.com熱心網友回復:
字串匹配演算法,就是資料結構中的KMP演算法uj5u.com熱心網友回復:
不理解就除錯呀
if(j==0 || T[i] == T[j]){
++i; ++j;
next[i] = j;
printf("%d i=%d j=%d %d\n", __LINE__, i, j, next[i]);
}
else
{
j = next[j];
printf("%d j=%d %d\n", __LINE__, j, next[j]);
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/84740.html
標籤:C語言
上一篇:單鏈表的基本操作
下一篇:逆序 要求程式每次讀入一個正三位數,然后輸出逆序的數字。注意,當輸入的數字含有結尾的0時,輸出不應帶有前導的0。比如輸入700,輸出應該是7。 哥哥們看一下
