KMP(2)--hdu2594
来源:互联网 发布:广州数据恢复 24小时 编辑:程序博客网 时间:2024/05/17 05:15
这题的题意是求s1的前缀和s2的后缀重复度的最大值:输入 s1 s2 问s2的后缀 以及s1的前缀中 相同的字符最多有多少个 是什么
水题,就是将s2作为文本串,s1某个前缀作为模式串,问在s2中能匹配到s1的最大前缀,但是注意它问的是s2的后缀,所以在s2中找到的s1的某个前缀如果不是在s2串的末尾,就继续找,直到找到的s1的某个前缀是在s2的最末尾。
应该说清楚了吧......
#include<stdio.h>#include<string.h>#define MAX 50005int next[MAX];char str1[MAX],str2[MAX];void GetNextval(){int plen=strlen(str1);int i=0;int j=next[0]=-1;while(i<plen){if(j==-1||str1[i]==str1[j]){next[++i]=++j;}else j=next[j];}}int KMP(){int len=strlen(str2);int plen=strlen(str1);int i=0;int j=0;while(i<len){if(j==plen){j=next[j];}if(j==-1||str2[i]==str1[j]){i++;j++;}else j=next[j];}return j; //返回找到的s1前缀的最末尾的字符的下标}int main(){while(scanf("%s%s",str1,str2)!=EOF){GetNextval();str1[KMP()]='\0';if(KMP())printf("%s %d\n",str1,KMP());else printf("0\n");}return 0;}s[i+len]=s[i];}s[i+len]='\0';GetNextval();if(KMP())printf("yes\n"); //根据下标输出找到的最长的s1的前缀else printf("no\n");}return 0;}
1 0
- KMP(2)--hdu2594
- hdu2594 kmp
- hdu2594(KMP)
- HDU2594 【KMP】
- hdu2594之KMP入门
- hdu2594 简单KMP
- hdu2594(kmp)
- hdu2594(KMP水题)
- hdu2594(kmp求next)
- hdu2594--kmp入门题
- 【KMP】 hdu2594 Simpsons’ Hidden Talents
- hdu2594 Simpsons’ Hidden Talents kmp
- HDU2594 Simpsons’ Hidden Talents 【KMP】
- hdu2594 Simpsons’ Hidden Talents(KMP)
- HDU2594 Simpsons’ Hidden Talents【KMP】
- HDU2594 Simpsons’ Hidden Talents KMP
- HDU2594 Simpsons’ Hidden Talents KMP
- Simpsons' Hidden Talents hdu2594 kmp
- PDO多种方式取得查询结果
- 正则表达式-学习
- openERP 简单模块 1
- 2016年中总结和展望
- 裁剪特定时长音乐需求之Audacity
- KMP(2)--hdu2594
- mybatis 批量的更新
- oracle 序列的创建和作用
- Fiddler (四) 实现手机的抓包
- DOS命令删除WINODOWS服务
- mybatis关联查询一对多问题解决,将表中对应的多条数据以list形式存储
- make_heap(), pop_heap(), push_heap()用法
- 如何快速开发出一个高质量的APP
- jhipster应用