国产探花免费观看_亚洲丰满少妇自慰呻吟_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 算法的實例詳解本站關于數據結構和算法的文章還有很多,希望大家搜索查閱,感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

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

圖片精選

主站蜘蛛池模板: 读书| 鸡泽县| 盘锦市| 新昌县| 同江市| 旬邑县| 阜南县| 大厂| 北宁市| 达尔| 沧州市| 五大连池市| 巴林右旗| 达孜县| 句容市| 永仁县| 罗城| 德格县| 溧阳市| 许昌县| 乌海市| 新竹县| 兰坪| 永州市| 漳平市| 高密市| 商南县| 淮安市| 杭锦旗| 增城市| 富川| 台山市| 清新县| 丰宁| 渭南市| 大洼县| 景谷| 平凉市| 广河县| 麻城市| 贺兰县|