zoukankan      html  css  js  c++  java
  • HDU

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1711

    #include <iostream>
    #include <string>
    #include <cstring>
    #include <cstdio>
    using namespace std;
    /*************************************************************************************************************
            找到第一次匹配成功的位置 id,看着板子写的
    
    *************************************************************************************************************/
    
    int Next[10005];
    int s[1000005],p[10005];
    
    void getNext(int m){
        int i=0,j=-1;
        Next[0]=-1;
    
        while(i < m){
            while(j != -1 && p[i] != p[j])
                j = Next[j];
            if(p[++i] == p[++j])  Next[i]=Next[j];
            else
                Next[i]=j;
        }
    }
    
    int Kmp(int n,int m){
        getNext(m);
        int i = 0,j = 0;
        while(i < n && j < m){
            while(j != -1 && s[i] != p[j])
                j = Next[j];
            i++;
            j++;
        }
        if(j >= m)
            return i-m+1;
        else
            return -1;
    }
    
    int main()
    {
        int T,m,n;
        cin>>T;
        while(T--){
            scanf("%d%d",&n,&m);
            for(int i = 0;i < n;i ++)   scanf("%d",&s[i]);
            for(int i = 0;i < m;i ++)   scanf("%d",&p[i]);
    
            if(n < m)   cout<<"-1"<<endl;
            else
                cout<<Kmp(n,m)<<endl;
        }
        return 0;
    }
    


  • 相关阅读:
    Java中Date日期字符串格式的各种转换
    Redis集群搭建与简单使用
    Java中的Redis应用
    java的linux命令
    Lucene全文检索引擎
    设置Xshell中支持中文
    Java并发Fork-Join框架原理解析
    java线程
    Django-路由层
    Django简介
  • 原文地址:https://www.cnblogs.com/Jstyle-continue/p/6351967.html
Copyright © 2011-2022 走看看