zoukankan      html  css  js  c++  java
  • hdu 2594 Simpsons’ Hidden Talents

    kmp,题意是找一个字符串既是s1串的前缀同时又是s2后缀,并且要这个字符串的长度最大。思路是把s2串当成是文本串,s1串当成是模式串,两个串KMP。具体的见代码。呵呵。

    ac代码:

    View Code
    #include <algorithm>
    #include <iostream>
    #include <cstdlib>
    #include <cstring>
    #include <cstdio>
    
    using namespace std;
    
    const int maxn=50000+5;
    
    char s1[maxn],s2[maxn];
    int n,len1,len2,ans,next[maxn];
    
    void get_next()
    {
        int i=0,j=-1;
        next[0]=-1;
        while(i<len1)
        {
            if(j==-1||s1[i]==s1[j])
            {
                i++;
                j++;
                if(s1[i]!=s1[j])
                    next[i]=j;
                else
                    next[i]=next[j];
            }
            else
                j=next[j];
        }
    }
    
    void KMP()
    {
        int i=0,j=0;
        while(i<len2)
        {
            if(j==-1||s2[i]==s1[j])
                i++,j++;
            else
                j=next[j];
        }
        if(j==0)
            printf("%d\n",0);
        else
        {
            for(int i=0;i<j;i++)
                printf("%c",s1[i]);
            printf(" %d\n",j);
        }
    
    }
    
    int main()
    {
        while(~scanf("%s%s",s1,s2))
        {
            len1=strlen(s1);
            len2=strlen(s2);
            get_next();
            KMP();
            memset(s1,0,sizeof(s1));
            memset(s2,0,sizeof(s2));
        }
        return 0;
    }

    现在大概明白了人家大牛是怎么炼成的,做题,是最好的检测你知识的理解跟增加感悟的好方式。同样欢迎大家批评指正。

    勸君惜取少年時&莫待無花空折枝
  • 相关阅读:
    Mysql体系结构(第4天)
    常用的课程网站
    Mysql 升级、用户与授权,
    Bootstrap
    项目中用到的一些特殊字符和图标 Content:"2715",特殊字符和图标
    CentOS 7 安装与卸载MySQL
    Iterm2使用
    Linux定时任务
    Ext.create细节分析
    Ext.define细节分析
  • 原文地址:https://www.cnblogs.com/RainingDays/p/2766480.html
Copyright © 2011-2022 走看看