hdu2594 Simpsons’ Hidden Talents kmp next函数的运用
2014-07-24 16:47
381 查看
http://acm.hdu.edu.cn/showproblem.php?pid=2594
题意:给你两个数组,让你求以第一数组前缀 和第二个数组的后缀的最长公共部分。
其实就是对于next函数的使用,先把两个字符串合成一个,然后因为是公共部分,所以next【len】也应该小于第一个和第二个字符串最小长度。
#include<iostream>
#include<stdio.h>
#include<string.h>
using namespace std;
char st[1000005],sa[50005];
int next[1000005];
void getnext(char *p)
{
int i,j;
i=0;j=-1;
next[i]=-1;
int len=strlen(p);
while(i<len)
{
if(j==-1||p[i]==p[j])
{
i++;
j++;
next[i]=j;
}
else
j=next[j];
}
}
int main()
{
int n,i,j;
int len,len1,len2;
while(scanf("%s %s",&st,&sa)!=EOF)
{
len1=strlen(st);
len2=strlen(sa);
strcat(st,sa);
getnext(st);
len=strlen(st);
int ans=next[len];
while(ans>len1||ans>len2)
{
ans=next[ans];
}
if(ans!=0)
{
for(i=0;i<ans;i++)
printf("%c",st[i]);
printf(" %d\n",ans);
}
else
printf("%d\n",ans);
}
}
题意:给你两个数组,让你求以第一数组前缀 和第二个数组的后缀的最长公共部分。
其实就是对于next函数的使用,先把两个字符串合成一个,然后因为是公共部分,所以next【len】也应该小于第一个和第二个字符串最小长度。
#include<iostream>
#include<stdio.h>
#include<string.h>
using namespace std;
char st[1000005],sa[50005];
int next[1000005];
void getnext(char *p)
{
int i,j;
i=0;j=-1;
next[i]=-1;
int len=strlen(p);
while(i<len)
{
if(j==-1||p[i]==p[j])
{
i++;
j++;
next[i]=j;
}
else
j=next[j];
}
}
int main()
{
int n,i,j;
int len,len1,len2;
while(scanf("%s %s",&st,&sa)!=EOF)
{
len1=strlen(st);
len2=strlen(sa);
strcat(st,sa);
getnext(st);
len=strlen(st);
int ans=next[len];
while(ans>len1||ans>len2)
{
ans=next[ans];
}
if(ans!=0)
{
for(i=0;i<ans;i++)
printf("%c",st[i]);
printf(" %d\n",ans);
}
else
printf("%d\n",ans);
}
}
相关文章推荐
- Simpsons’ Hidden Talents(KMPnext[]的应用)
- hdu2594 Simpsons’ Hidden Talents kmp
- Simpsons’ Hidden Talents(kmp next数组的应用)
- hdu2594 Simpsons’ Hidden Talents LCS--扩展KMP
- HDU 2594 Simpsons’ Hidden Talents kmp next数组问题
- HDU2594 Simpsons’ Hidden Talents KMP
- hdu 2594 Simpsons’ Hidden Talents KMP
- 扩展KMP ( Next数组 )——Simpson's Hidden Talents ( HDU 2594 )
- KMP中的next函数灵活运用
- HDU 2594 Simpsons’ Hidden Talents kmp || extkmp
- HDU2594 Simpsons’ Hidden Talents(kmp,next的性质)
- Simpsons’ Hidden Talents +KMP
- HDU 2594 Simpsons’ Hidden Talents KMP
- HDU 2594 Simpsons’ Hidden Talents KMP
- hdu 2594 Simpsons’ Hidden Talents KMP
- HDU 2594 Simpsons’ Hidden Talents KMP的next数组应用
- Simpsons’ Hidden Talents HDU - 2594 (KMP)
- HDU 2594 Simpsons’ Hidden Talents——kmp
- HDU 2594 Simpsons’ Hidden Talents KMP
- hdu 2594-Simpsons’ Hidden Talents(KMP)