贴代码,觉得带template的有一些大材小用……不过还是按自己风格写吧!

/*******************************************************************************/
/* OS : 3.2.0-58-generic #88-Ubuntu SMP Tue Dec 3 UTC 2013 GNU/Linux
* Compiler : g++ (GCC) 4.6.3 (Ubuntu/Linaro 4.6.3-1ubuntu5)
* Encoding : UTF8
* Date : 2014-04-26
* All Rights Reserved by yaolong.
*****************************************************************************/
/* Description: ***************************************************************
*****************************************************************************/
/* Analysis: ******************************************************************
*****************************************************************************/
/*****************************************************************************/
#include<iostream>
#include<cstdio>
#include<cstring>
#include<string> using namespace std;
template<typename S,typename T>
void get_nextval(S const * ptrn,T plen,T *nextval){ T i=; //i从0开始
nextval[i]=-;
T j=-;
while(i<plen){ if(j==-||ptrn[i]==ptrn[j]){
++i;
++j;
//if(ptrn[i]!=ptrn[j]){
nextval[i]=j;
// }else nextval[i]=nextval[j]; }else j=nextval[j];
}
}
template<typename S,typename T>
T kmp_search(S const * src,T slen,S const *ptrn,T plen,T const *nextval,T pos){ T i=pos,j=;
while(i<slen)
{
if(src[i]==ptrn[j])
{
if(j==plen-) return i-(plen-)+;
i++;j++;
}
else
{
j=nextval[j];
if(j==-) {i++;j=;}
}
}
return -; }
int src[],ptrn[];
int nextval[];
int main(){ int T,slen,plen,i;
scanf("%d",&T);
while(T--){ scanf("%d%d",&slen,&plen);
for(i=;i<slen;i++){
scanf("%d",src+i); }
for(i=;i<plen;i++){ scanf("%d",ptrn+i);
} get_nextval(ptrn, plen, nextval); printf("%d\n",kmp_search(src, slen, ptrn, plen, nextval, )); } return ; }

KMP的模版实现(以hdu1711为例)的更多相关文章

  1. [POJ2406&POJ1961]用KMP解决字符串的循环问题两例

    翻阅了一下网上资料,发现大部分都说这题是找规律...或是说YY出的一个算法..不会证明... 然后就脑补了一下证明 ~ 结论:对于一个字符串S[1..N],如果N mod (N-next[N])=0 ...

  2. poj 2752 Seek the Name, Seek the Fame (KMP纯模版)

    Seek the Name, Seek the Fame Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 13840   Ac ...

  3. KMP模板题 Number Sequence HDU1711

    模板...嗯 #include <iostream> #include <cstdio> #include <string.h> #pragma warning ( ...

  4. Django 模版语言详解

    一.简介 模版是纯文本文件.它可以产生任何基于文本的的格式(HTML,XML,CSV等等). 模版包括在使用时会被值替换掉的 变量,和控制模版逻辑的 标签. 例: {% extends "b ...

  5. Mustache 使用总结

    前言: 在分析 jeesite 项目的时候,看到了 Mustache,于是查了下 正文: 1.Mustache 概述 Mustache 是基于 JavaScript 实现的模板引擎,即用来 渲染前台页 ...

  6. Mustache 使用心得总结

    Mustache 使用心得总结 前言: 之前的一个项目里面就有用到这个前台的渲染模版,当时挺忙的也没时间抽空总结一下,刚好上周项目里又用到这个轻量型的渲染模版,真心感觉很好用,因此就总结一下使用心得, ...

  7. Freemarker的初次使用之FTL标签嵌套与map的使用

    入职第二周了,在熟悉了公司自动化测试脚本的编写(使用什么数据库,使用哪种语言,框架带了哪些方法)后,现在开始熟悉模拟器,我们把请求发到服务器1,服务器1根据请求参数处理后将结果发给模拟器,模拟器根据服 ...

  8. javascript模板引擎Mustache

    Mustache(英文本意:触须,胡须)是基于JavaScript实现的模版引擎,类似于JQuery Template,但是这个模版更加的轻量级,语法更加的简单易用,很容易上手. 下载:https:/ ...

  9. cocos2dx lua

    对于游戏公司而言.採用游戏脚本lua.python等进行开发也非经常见,可是非常多童鞋对脚本并没有非常熟悉的概念,本篇则向大家简介脚本的用途以及在Cocos2dx基础使用方法: Lua和python这 ...

随机推荐

  1. NSTimer运行机制和线程问题

    A.首先要理解NSTimer运行机制和Runloop之间的关系: 1.IOS的Run Loops机制 Run Loops是线程的基础部份,任何线程,包括主结程,都包含了一个run loop对象,Coc ...

  2. iOS 限制textField输入的长度

    1.电话号码(带3-3-4效果) //指定代理 self.phoneTextField.delegate = self; //当编辑改变的时候,进行字符校验 [self.phoneTextField ...

  3. SQLite使用教程3 数据类型

    http://www.runoob.com/sqlite/sqlite-data-types.html SQLite 数据类型 SQLite 数据类型是一个用来指定任何对象的数据类型的属性.SQLit ...

  4. esui控件validatebox 通过正则判断输入 json传值

    <td> @Html.TextBoxFor(m => m.ActualInvoiceFee, new { @id = "txtActualInvoiceFee", ...

  5. careercup-C和C++ 13.4

    13.4 深拷贝和浅拷贝有什么区别,如何使用? 解答 浅拷贝并不复制数据,只复制指向数据的指针,因此是多个指针指向同一份数据. 深拷贝会复制原始数据,每个指针指向一份独立的数据.通过下面的代码, 可以 ...

  6. 应聘.net开发工程师常见的面试题(五)

    1.描述一下C#中索引器的实现过程,是否只能根据数字进行索引? 答:不是.可以用任意类型. 2.在C#中,string str = null 与 string str = ” ” 请尽量使用文字或图象 ...

  7. 深入理解计算机系统第二版习题解答CSAPP 2.10

    对于任一位向量a,有a ^ a = 0.考虑下面的程序: void inplace_swap(int *x, int *y) { *y = *x ^ *y; *x = *x ^ *y; *y = *x ...

  8. PowerShell 批量增加ACL

    $serviceName="云服务名称"$vmName="虚拟机名称"$endPoint="终结点名称"$acl=New-AzureAclC ...

  9. C语言的一些误用和知识总结

    现在学嵌入式的话,最主要是要把C语言熟悉,比如指针,链表,共用体,结构体等,还是得听老师的话.. 在学习单片机的时候才真正知道C语言是什么它是来干什么的~但是C语言用到嵌入式只是它小小的一部分他的应用 ...

  10. nodejs中npm工具自身升级

    npm官方地址:https://www.npmjs.com/ npm在github上的地址:https://github.com/npm/npm 目前(截止2016-03-15)npm最新版本为3.8 ...