zoukankan      html  css  js  c++  java
  • hdu1711(kmp纯模板)

    View Code
    void get_next()
    {
    int i=-1,j=0;
    next[
    0]=-1;
    while(j<m-1)
    {
    if(i==-1||b[i]==b[j]) { ++i; ++j; next[j]=i;}
    else i=next[i];
    }
    }
    int Index_KMP()
    {
    int i=0,j=0;
    while(i<n && j<m)
    {
    if(a[i]==b[j]||j==-1) { ++i; ++j;}
    else j=next[j];
    }
    if(j>=m) return i-m+1;
    else return -1;
    }

    代码:

    View Code
    #include<iostream>
    #define M 10001
    #define N 1000001
    using namespace std;
    __int64 a[N],b[M];
    int next[M];
    int t,n,m;
    void get_next()
    {
    int i=-1,j=0;
    next[
    0] = -1;
    while(j<m-1)
    {
    if(i==-1 || b[i]==b[j])
    {
    i
    ++;
    j
    ++;
    next[j]
    = i;
    }
    else i=next[i];
    }
    }

    int Index_KMP()
    {
    int i=0,j=0;
    while(i<n && j<m)
    {
    if(a[i] == b[j] || j==-1)
    {
    i
    ++;
    j
    ++;
    }
    else j=next[j];
    }
    if(j>=m) return i-m+1;
    else return -1;
    }
    int main()
    {

    int i,j;
    scanf(
    "%d",&t);
    while(t--)
    {
    scanf(
    "%d%d",&n,&m);

    for(i=0;i<n;i++) scanf("%d",&a[i]);
    for(i=0;i<m;i++)scanf("%d",&b[i]);
    get_next();
    printf(
    "%d\n",Index_KMP());

    }
    return 0;
    }
  • 相关阅读:
    CentOS 6.5 伪分布式 安装 hadoop 2.6.0
    单例模式的思想简介
    最有二叉树 哈夫曼树
    二叉树2
    二叉树1
    栈与队列
    线性表
    字符串模式匹配KMP算法
    数据结构(四) 查找 排序
    数据结构(三) 图
  • 原文地址:https://www.cnblogs.com/FCWORLD/p/2009019.html
Copyright © 2011-2022 走看看