博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
KMP算法模板(C++实现)
阅读量:6688 次
发布时间:2019-06-25

本文共 989 字,大约阅读时间需要 3 分钟。

/*参考《算法导论》 My Code:*/ #include 
#include
#include
using namespace std; const int N = 1000; string T, P; int pi[N]; void COMPUTER_PREFIX_FUNCTION(string P){
int m = P.length(), i, k; for(k = pi[0] = -1, i = 1; i < m; i++){
while(k > -1 && P[k+1] != P[i]) k = pi[k]; if(P[k+1] == P[i]) k++; pi[i] = k; } cout << "COMPUTER-PREFIX-FUNCTION" << endl; for(i = 0; i < m; i++){
cout << pi[i] << " "; } cout << endl << endl; } void KMP_MATCHER(string T, string P){
int i, n, m, k; n = T.length(); m = P.length(); for(k = -1, i = 0; i < n; i++){
while(k > -1 && P[k+1] != T[i]) k = pi[k]; if(P[k+1] == T[i]) k++; if(k == m-1){
cout << "Pattern occurs with shift " << i - m + 2 << endl; k = pi[k]; } } } int main(){
//freopen("data.in", "r", stdin); cin >> T >> P; COMPUTER_PREFIX_FUNCTION(P); KMP_MATCHER(T, P); return 0; }

转载地址:http://zmzoo.baihongyu.com/

你可能感兴趣的文章
C++ 初始化与赋值
查看>>
碰到的异常
查看>>
Android对话框-上篇-之系统对话框
查看>>
利用Segue在视图控制器间传值的问题
查看>>
发动机存隐患 现代起亚宣布在美召回16.8万辆车
查看>>
最前线|VIPKID正寻求4-5亿美元新一轮融资,估值达60亿美元
查看>>
文 OR 理?答案都在这里!
查看>>
XML+JSON面试题都在这里
查看>>
教你如何攻克Kotlin中泛型型变的难点(实践篇)
查看>>
2018Android面试经历
查看>>
不受限对抗样本挑战赛介绍
查看>>
浅解前端必须掌握的算法(三):直接插入排序
查看>>
[译] TensorFlow 教程 #06 - CIFAR-10
查看>>
阅读SSH的ERP项目【第二篇】
查看>>
如何有效的避免OOM,温故Java中的引用
查看>>
NSHipster: NSRegularExpression 中文版
查看>>
Android 开发中不得不知道的 Tips 集合 (持续更新 ing)
查看>>
报警系统QuickAlarm之报警规则的设定与加载
查看>>
【CLI】使用 Curl 下载文件实时进度条显示
查看>>
Android 滤镜效果和颜色通道过滤
查看>>