zoukankan      html  css  js  c++  java
  • [裸KMP][HDU1711][Number Sequence]

    题意

    找到子串在母串出现的第一个位置

    解法

    裸的KMP

    特别的地方

    第一次不看模板自己敲的KMP

    #include<stdio.h>
    const int maxn=100000;
    const int MAXN=1000000;
    int next[maxn];
    int S[MAXN];
    int T[maxn];
    int N,M;
    void get_next()
    {
        for(int i=2;i<=M;i++)
        {
            int p=i-1;
            while(T[next[p]+1]!=T[i]&&p!=0) p=next[p];
            if(p!=0)
            next[i]=next[p]+1;
            else next[i]=0;
        }
    }
    void input()
    {
        scanf("%d%d",&N,&M);
        for(int i=1;i<=N;i++)
            scanf("%d",&S[i]);
        for(int i=1;i<=M;i++)
            scanf("%d",&T[i]);
    }
    int kmp()
    {
        int i=1,j=0;
        for(i=1;i<=N;i++)
        {
            while(S[i]!=T[j+1]&&j>0) j=next[j];
            if(S[i]==T[j+1]) j++;
            if(j==M) return i-M+1;
        }
        return 0;
    }
    void solve()
    {
        get_next();
       int t=kmp();
        if(t==0) printf("-1
    ");
        else printf("%d
    ",t);
    }
    int main()
    {
        //freopen("a.in","r",stdin);
        int T;
        scanf("%d",&T);
        while(T--)
        {
            input();
            solve();
        }
    }
    

    //等会继续写

  • 相关阅读:
    async 和 await
    C#中lock死锁
    Attribute特性
    数据库优化
    EF(ORM)
    依赖注入
    面向接口编程
    EF乐观锁与悲观锁
    为什么要使用RESTFUL风格?
    cloudsim 3.0.3下载与安装教程
  • 原文地址:https://www.cnblogs.com/zy691357966/p/5480318.html
Copyright © 2011-2022 走看看