zoukankan      html  css  js  c++  java
  • hdu1711 Number Sequence

    http://acm.hdu.edu.cn/showproblem.php?pid=1711

    KMP的简单应用啊

    直接贴代码了

    代码:

     1 #include<iostream>
     2 #include<stdlib.h>
     3 #include<stdio.h>
     4 using namespace std;
     5 #define maxn 1000010
     6 int n,m;
     7 int a[maxn],b[maxn];
     8 int f[maxn];
     9 void callfail()
    10 {
    11      int i,j=0,k=-1;
    12      f[0]=-1;
    13      while(j<m)
    14      {
    15          if(k==-1||b[j]==b[k])
    16          {
    17              k++;j++;
    18              f[j]=k;
    19          }
    20          else k=f[k];
    21      }
    22 }
    23 int  Answer()
    24 {
    25   int i=0,j=0;
    26   while(i<n&&j<m)
    27   {
    28     if(j==-1||a[i]==b[j])//j==-1 is important .Remember it!!!
    29     {
    30         i++;j++;
    31         if(j==m) return i-m+1;
    32 
    33     }
    34     else j=f[j];
    35   }
    36   return -1;
    37 }
    38 int main()
    39 {
    40     int t;
    41     scanf("%d",&t);
    42     while(t--)
    43     {
    44        scanf("%d%d",&n,&m);
    45        for(int i=0;i<n;i++)
    46           scanf("%d",&a[i]);
    47        for(int i=0;i<m;i++)
    48           scanf("%d",&b[i]);
    49        callfail();
    50       cout<<Answer()<<endl;
    51     }
    52     return 0;
    53 
    54 }
  • 相关阅读:
    day08
    day07
    day06
    day06
    day05
    第三次作业
    第三次作业
    第二次作业
    java 数字和日期处理
    jsp文件导包
  • 原文地址:https://www.cnblogs.com/xiaozhuyang/p/hdu1711.html
Copyright © 2011-2022 走看看