hdu 3336 Count the string(KMP)
来源:互联网 发布:java thread wait 编辑:程序博客网 时间:2024/06/05 08:17
一道应用kmp算法中next数组的题目
这其中vis[i]从1加到n
vis[i]=[next[i]]+1;
#include<string.h>#include<stdlib.h>
#include<stdio.h>
#include<iostream>
#include<algorithm>
using namespace std;
char s[200005];
int b;
int next[200005];
int vis[200005];
void nest(char *s)
{
next[0]=-1;
int i=0;
int j=-1;
while(i<b)
{
if(j==-1||s[i]==s[j])
{
i++;
j++;
next[i]=j;
}
else
j=next[j];
}
// for(i=0;i<=b;i++)
// printf("%d\n",next[i]);
}
bool kmp(char *s)
{
int sum=0;
for(int k=1;k<=b;k++)
{
/*int i=0,j=0;
while(i<b)
{
if(j==-1||s[i]==s[j])
{
i++;j++;
if(j==k)
{
sum++; //printf("%d\n",j);
j=next[j];
}
}
else j=next[j];
}*/
if(next[k]==0)
vis[k]=1;
else
vis[k]=vis[next[k]]+1;
}
}
int main()
{
int a;
scanf("%d",&a);
while(a--)
{
memset(vis,0,sizeof(vis));
scanf("%d",&b);
scanf("%s",s);
int sum=0;
nest(s);
kmp(s);
for(int i=1;i<=b;i++)
{sum+=vis[i];
sum=sum%10007;}
printf("%d\n",sum);
}
}
0 0
- hdu 3336 Count the string(KMP)
- hdu 3336 Count the string(KMP)
- HDU 3336 Count the string(kmp)
- HDU 3336 Count the string(KMP)
- HDU 3336 Count the string(KMP)
- 【hdu 3336】Count the string(kmp)
- 【HDU 3336】Count the string(kmp)
- 【HDU-3336-count the string】(KMP)
- hdu 3336 Count the string KMP
- KMP Hdu-3336 Count the string
- HDU 3336 Count the string(KMP 理解)
- HDU 3336 Count the string KMP
- HDU 3336 Count the string(KMP+dp)
- [HDU 3336]Count the String[kmp]
- [HDU 3336]Count the String[kmp][DP]
- HDU 3336 Count the string KMP+DP
- hdu 3336 Count the string(KMP)
- hdu 3336 Count the string KMP+DP
- 输入一个字节内的数(0~255)和移动位数。输出移位结果(要求循环移位)提示:系统自带的移位都是非循环的
- 种类并查集小结
- 不成熟的6大心理特征
- 代码里写了ARC,而不使用ARC编译
- closest jquery
- hdu 3336 Count the string(KMP)
- 15个受用一生的学习习惯
- PHP学习:字符串操作和正则表达式
- POJ 2513 Colored Sticks (字典树,并查集,欧拉路径组合题)
- javamail 收邮件并解析附件
- java各种流读写文件
- linux下搭建汇编环境
- POJ 2175 Evacuation Plan (费用流,负环,消圈法,SPFA)
- 龙永图助理,龙永图联系电话,龙永图简介,