国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C > 正文

KMP 算法實例詳解

2020-01-26 13:59:49
字體:
來源:轉載
供稿:網友

KMP 算法實例詳解

KMP算法,是由Knuth,Morris,Pratt共同提出的模式匹配算法,其對于任何模式和目標序列,都可以在線性時間內完成匹配查找,而不會發生退化,是一個非常優秀的模式匹配算法。

分析:KMP模板題、KMP的關鍵是求出next的值、先預處理出next的值、然后一遍掃過、復雜度O(m+n)

實例代碼:

#include<stdio.h> #include<string.h> #define N 1000005 int s[N]; int p[N]; int next[N]; int m,n; void getnext(){  int j=0,k=-1;  next[0]=-1;  while(j<m){   if(k==-1||p[j]==p[k]){    j++;    k++;    next[j]=k;   }   else    k=next[k];  } } int kmp(){  int i=0,j=0;  getnext();  while(i<n){   if(j==-1||s[i]==p[j]){    i++;    j++;   }   else    j=next[j];   if(j==m)    return i;  }  return -1; } int main(){  int t;  scanf("%d",&t);  while(t--){   scanf("%d%d",&n,&m);   for(int i=0;i<n;i++)    scanf("%d",&s[i]);   for(int i=0;i<m;i++)    scanf("%d",&p[i]);   if(kmp()==-1)    printf("-1/n");   else    printf("%d/n",kmp()-m+1);  }  return 0; } 

以上就是KMP 算法的實例詳解本站關于數據結構和算法的文章還有很多,希望大家搜索查閱,感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 天峨县| 思茅市| 灌云县| 长兴县| 晋宁县| 丰台区| 雷波县| 葵青区| 黑龙江省| 色达县| 昌图县| 阳泉市| 襄汾县| 东阿县| 托克托县| 余姚市| 根河市| 聂荣县| 阜新市| 时尚| 东乌珠穆沁旗| 新巴尔虎右旗| 自贡市| 射阳县| 慈溪市| 宁都县| 徐水县| 齐齐哈尔市| 葵青区| 嘉定区| 龙胜| 额敏县| 桃园县| 奉节县| 黄冈市| 英超| 大安市| 望奎县| 柯坪县| 涿州市| 长垣县|