zoukankan      html  css  js  c++  java
  • hdu 1711

       感觉到了算法的伟大,虽然是用了最基本的kmp算法,不过代码写的比较乱,因为数组是从0开始,如果数组时从1开始的话估计就会清晰了。

    #include<iostream>
    #include<stdio.h>
    using namespace std;
    int s1[1000005],s2[10005];
    int p[10005];
    int main()
    {
        int total_case,iii;
        scanf("%d",&total_case);
        for(iii=0;iii<total_case;iii++)
        {
              int n1,n2,i;
              scanf("%d%d",&n1,&n2);
              for(i=0;i<n1;i++)
                 scanf("%d",&s1[i]);
              for(i=0;i<n2;i++)
                 scanf("%d",&s2[i]);
              int j=-1;
              p[0]=-1;
              for(i=1;i<n2;i++)        //初始化数组p的值
              {
                  while(j>-1&&s2[j+1]!=s2[i])
                       j=p[j];                //若不相等的话就等于其下最短首尾相等字符创的长度(字符串的长度从零开始)
                  if(s2[j+1]==s2[i])
                       j++;
                  p[i]=j;
              }
             
              j=-1;
              for(i=0;i<n1;i++)
              {
                  while(j>-1&&s2[j+1]!=s1[i])
                      j=p[j];
                  if(s2[j+1]==s1[i])
                      j++;
                  if(j==n2-1)
                  {
                      printf("%d\n",i-j+1);
                      break;
                  }
              }
              if(i==n1)
                  printf("-1\n");
          }
    }

  • 相关阅读:
    动态表单功能
    IDEA2019版Run Dashboard调出方案
    js页面传递参数为中文乱码问题解决方法
    layui 一行多列控件时使用table布局
    npm 安装包失败 --- 清除npm缓存
    解析数据库连接字符串 (将Data Source、Initial Catalog、User ID、Password取出)
    SQL SERVER 存储过程语法
    mvc5 跨域访问
    钟表
    MVC session过期如何处理跳转(转)
  • 原文地址:https://www.cnblogs.com/dchipnau/p/4985953.html
Copyright © 2011-2022 走看看