Simpsons’ Hidden Talents HDU - 2594 (kmp)

原创 2018年04月16日 17:39:51

Simpsons’ Hidden Talents HDU - 2594 (kmp)

题目链接:https://cn.vjudge.net/contest/163024#problem/J
题目大意:求第一个串前缀和第二串后缀的最大匹配个数。
input:
clinton
homer
riemann
marjorie
output:
0
rie 3
题目分析:将第二个作为主串,第一个串作为模式串进行匹配。

#include <bits/stdc++.h>
using namespace std;

const int maxn = 5e4 + 100;

char str1[maxn], str2[maxn];
int Next[maxn];

void GetNext() {
   int len = strlen(str2);
   Next[0] = 0;
   for(int i = 1; i < len; i++) {
       int j = Next[i - 1];
       while(j && str2[i] != str2[j]) j = Next[j - 1];
       if(str2[i] == str2[j]) Next[i] = j + 1;
       else Next[i] = 0;
   }
}

int kmp() {
    GetNext();
   int len1 = strlen(str1), len2 = strlen(str2);
   int ans = 0;
   int j = 0;
   for(int i = 0; i < len1; i++) {
      while(j && str1[i] != str2[j]) j = Next[j - 1];
      if(str1[i] == str2[j]) j++;
   }
   return j; //这里 直接返回j需要注意 
   //因为要匹配后缀,所以一定是到主串的最后才匹配到
}

int main()
{
    while(~scanf("%s %s", str2, str1)) {
        int v = kmp();
        if(!v) {
            printf("%d\n", v);
            continue;
        }
        else {
            for(int i = 0; i < v; i++)
                printf("%c", str2[i]);
            printf(" %d\n", v);
        }
    }
}

HDU 2594 - Simpsons’ Hidden Talents(扩展kmp模板)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2594题意:所谓扩展kmp: 给出主串S和模式串T,长度分别为slen和tlen,要求在线性时间内,对...
  • Infinity_Izayoi
  • Infinity_Izayoi
  • 2016-07-28 19:45:09
  • 169

HDU 2594Simpsons’ Hidden Talents(KMP运用)

Simpsons’ Hidden Talents Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java...
  • opm777
  • opm777
  • 2013-08-03 17:04:04
  • 1013

hdu 2594 Simpsons’ Hidden Talents KMP

代码:
  • a601025382s
  • a601025382s
  • 2014-08-09 18:59:35
  • 510

扩展KMP ( Next数组 )——Simpson's Hidden Talents ( HDU 2594 )

题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=2594 分析: 给出两个字符串S1,S2,求出一个最长子串(既是S1 的前缀又是S2的后缀),一开始...
  • FeBr2
  • FeBr2
  • 2016-07-28 11:08:26
  • 256

HDU 2594 Simpsons’ Hidden Talents (字符串-KMP)

HDU 2594 Simpsons’ Hidden Talents (字符串-KMP) 题目大意: 给你字符串s1和s2,问你s1的前缀和s2的后缀最长相同的串多长? 解题思路: 牢记KMP Ne...
  • a1061747415
  • a1061747415
  • 2014-07-29 20:41:47
  • 833

hdu 2594 Simpsons’ Hidden Talents(kmp模板)

直接把两个串连起来=_= 忘了考虑第二个串比第一个串短了=_= 附上代码喵: #include #include const int maxn=101000; #define M...
  • u012936765
  • u012936765
  • 2015-03-21 21:27:07
  • 226

HDU 2594 Simpsons’ Hidden Talents (kmp)

题意: 求A串的前缀和B串的后缀的lcp(最长公共前缀)求A串的前缀和B串的后缀的lcp(最长公共前缀) 分析: nxt数组的定义,然后把A串和B串拼起来,扫一遍nxt数组,找到第一个最大的...
  • lwt36
  • lwt36
  • 2015-10-30 15:30:33
  • 179

HDU 2594 Simpsons' Hidden Talents(kmp)

Description 给出两个字符串s1和s2,问s1的前缀和s2的后缀最大匹配及其数量 Input 多组输入,每组用例占两行包括两个字符串s1和s2,以文件尾结束输入 Output 对于...
  • V5ZSQ
  • V5ZSQ
  • 2015-09-08 08:37:00
  • 288

hdu 2594 Simpsons’ Hidden Talents(KMP)

题意:给出两个串s1和s2,求s1的一个最长的前缀,满足这个前缀是s2的后缀。 思路:依然是kmp,不过和普通的匹配略有区别。用s1去匹配s2,一直匹配到结尾,返回这时候匹配成功的长度即可,注意,由...
  • qian99
  • qian99
  • 2014-01-25 19:29:28
  • 666

hdu 2594 kmp Simpsons’ Hidden Talents

Homer: Marge, I just figured out a way to discover some of the talents we weren’t aware we had.  Mar...
  • qq_39259536
  • qq_39259536
  • 2017-08-11 09:00:16
  • 69
收藏助手
不良信息举报
您举报文章:Simpsons’ Hidden Talents HDU - 2594 (kmp)
举报原因:
原因补充:

(最多只允许输入30个字)