• hdu 1711 Number Sequence KMP模板题


    题意:给你两个数组,求第二个数组在第一个数组中的位置,若不存在,则输出-1.

    #include <cstdio>
    #include <cmath>
    #include <iostream>
    #include <string.h>
    #include <algorithm>
    using namespace std;
    int d[10005];
    int f[1000005];
    int Next[20005];
    void KMP(int s[],int len)
    {
        int n=len,i,j;
        memset(Next,0,sizeof(Next));
        for(i=1;i<n;i++)
        {
            j=Next[i-1];
            while(j>0&&s[i]!=s[j]) j=Next[j-1];
            if(s[i]==s[j]) j++;
            Next[i]=j;
        }
        return ;
    }
    int main()
    {
        int i,j,k,m,n,ans,T;
        scanf("%d",&T);
        while(T--)
        {
            scanf("%d%d",&n,&m);
            for(i=0;i<n;i++)
                scanf("%d",&f[i]);
            for(i=0;i<m;i++)
                scanf("%d",&d[i]);
            KMP(d,m);
            ans=-1;
            for(i=0,j=0;i<n;i++)
            {
                while(j>0&&d[j]!=f[i]) j=Next[j-1];
                if(f[i]==d[j]) j++;
                if(j==m)
                {
                    ans=i-m+2;
                    break;
                }
            }
            printf("%d
    ",ans);
        }
        return 0;
    }
  • 相关阅读:
    google浏览器切换成中文
    Python 进阶篇
    Linux 命令
    Linux
    Linux
    Linux
    Linux--shell脚本之文本处理工具
    Linux--shell脚本之正则表达式
    Linux
    Linux
  • 原文地址:https://www.cnblogs.com/zuferj115/p/5328695.html
Copyright © 2020-2023  润新知