原题链接

注意:2号和3号get_next()函数中next[i]赋值时的区别,一个是0,一个是1,且不能互换

#include<cstdio>
#include<cstring>
#include<iostream>
using namespace std;
const int maxn=1e5+;
char ch[*maxn];
char s[maxn],t[maxn];
int T,next[*maxn];
/*1.
void get_next(char *s)
{
next[1]=0;
//printf("%d\n",next[1]);
int i=1,j=0;
int slen=strlen(s);
while(i<slen){
if(j==0||s[i-1]==s[j-1]){
i++,j++;
next[i]=j;
//printf("%d\n",next[i]);
}
else j=next[j];
}
}严蔚敏数据结构P83页代码
*/
void get_next(char *s)
{
int slen=strlen(s);
next[]=;
for(int i=;i<slen;i++){
int j=next[i];
while(j&&s[i]!=s[j]) j=next[j];
next[i+]=(s[i]==s[j])?j+:;
}
}
/*3.
void get_next(char *s)
{
next[0]=0,next[1]=0;
//printf("%d\n",next[1]);
int slen=strlen(s);
for(int i=2;i<=slen;i++){
int j=next[i-1];
while(j&&s[i-2]!=s[j-1]) j=next[j];
next[i]=(s[i-2]==s[j-1])?j+1:1;
//printf("%d\n",next[i]);
}
}按照做数据结构笔试题的步骤一步一步推导
*/
int main()
{
scanf("%d",&T);
while(T--){
cin>>s>>t;
int slen=strlen(s);
int tlen=strlen(t);
for(int i=;i<tlen;i++) ch[i]=t[i];
ch[tlen]='#';
for(int i=;i<slen+tlen+;i++) ch[i+tlen+]=s[i];
int now=slen+tlen+;
ch[now]=;
int ans=;
memset(next,,sizeof(next));
get_next(ch);
while(next[now]>){
ans++;
now=next[now];
}
printf("%d\n",ans);
}
}

A题:Common Substrings(KMP应用)的更多相关文章

  1. dutacm.club_1087_Common Substrings_(KMP)_(结合此题通俗理解kmp的next数组)

    1087: Common Substrings Time Limit:3000/1000 MS (Java/Others)   Memory Limit:163840/131072 KB (Java/ ...

  2. poj 3415 Common Substrings(后缀数组+单调栈)

    http://poj.org/problem?id=3415 Common Substrings Time Limit: 5000MS   Memory Limit: 65536K Total Sub ...

  3. 【POJ3415】 Common Substrings(后缀数组|SAM)

    Common Substrings Description A substring of a string T is defined as: T(i, k)=TiTi+1...Ti+k-1, 1≤i≤ ...

  4. 字符串(后缀数组):POJ 3415 Common Substrings

    Common Substrings   Description A substring of a string T is defined as: T(i, k)=TiTi+1...Ti+k-1, 1≤ ...

  5. 1087: Common Substrings (哈希)

    1087: Common Substrings Time Limit:3000/1000 MS (Java/Others)   Memory Limit:163840/131072 KB (Java/ ...

  6. POJ3415 Common Substrings —— 后缀数组 + 单调栈 公共子串个数

    题目链接:https://vjudge.net/problem/POJ-3415 Common Substrings Time Limit: 5000MS   Memory Limit: 65536K ...

  7. Common Substrings POJ - 3415 (后缀自动机)

    Common Substrings \[ Time Limit: 5000 ms\quad Memory Limit: 65536 kB \] 题意 给出两个字符串,要求两个字符串公共子串长度不小于 ...

  8. POJ 3415 Common Substrings(后缀数组 + 单调栈)题解

    题意: 给两个串\(A.B\),问你长度\(>=k\)的有几对公共子串 思路: 先想一个朴素算法: 把\(B\)接在\(A\)后面,然后去跑后缀数组,得到\(height\)数组,那么直接\(r ...

  9. hdu 1238 Substrings(kmp+暴力枚举)

    Problem Description You are given a number of case-sensitive strings of alphabetic characters, find ...

随机推荐

  1. swift - UIImageView 的使用

    1.创建 var imageView = UIImageView()//初始化 2.图片的显示及图片的改变 imageView = UIImageView(image: UIImage(named: ...

  2. linux连接sybase数据库-isql

    转自:http://blog.knowsky.com/196438.htm 想要linux连接sybase数据库用命令isql: isql [-U login id] [-P password] [- ...

  3. ActiveMQ内存配置和密码设置

    1.配置内存 bin中activemq.bat 中的第一行 加上 : REM 配置内存 set ACTIVEMQ_OPTS=-Xms1G -Xmx1G 2.修改控制台密码 1.打开conf/jetty ...

  4. mySQL数据库三:命令行附录

    一:where 在上一篇,粗略的介绍了where,但是where后面可以跟其他的条件,现在我们来一一说明 1.between:在某两个值之间 我建立一个名为person的表,里面有id,name,ag ...

  5. 非旋转Treap

    Treap是一种平衡二叉树,同时也是一个堆.它既具有二叉查找树的性质,也具有堆的性质.在对数据的查找.插入.删除.求第k大等操作上具有期望O(log2n)的复杂度.     Treap可以通过节点的旋 ...

  6. LeetCode——Best Time to Buy and Sell Stock

    Description: Say you have an array for which the ith element is the price of a given stock on day i. ...

  7. PHP后门的eval类和system类 函数到底有哪些区别

    一. 一直以来对PHP的eval这一类函数和system这一类存在疑惑的地方,今天彻底研究了一下,写查PHP一句话的时候可以更有把握一些.其实都是一些满基础的知识,大佬别喷.干安全的基础很重要. 二. ...

  8. Sql Server 关于列名带中括号"[]"的问题

    1.如果列名为数据库的关键字则自动加上中括号“[]” 例如[level] 2.如果列名中带有特殊符号.[date(a)] 数据存储的过程: 1.在添加数据的时候:要带有中括号,有必要在添加参数的时候不 ...

  9. 170721、springboot编程之注解(annotation)列表

    (1)@SpringBootApplication 申明让spring boot自动给程序进行必要的配置,这个配置等同于: @Configuration ,@EnableAutoConfigurati ...

  10. Maven搭建Nexus私有仓库

    下载压缩包nexus-2.13.0-01-bundle.tar.gz 解压后有两个目录 进入程序目录启动 ./nexus start 启动告警(确认用root启动把以下加入到环境变量) export ...