hdu 3336【Count the string】(KMP)
一道字符串匹配的题目,仅仅借此题练习一下KMP
因为这道题目就是要求用从头开始的n个字符串去匹配原来的字符串,很明显与KMP中求next的过程很相似,所以只要把能够从头开始匹配一定个数的字符串的个数加起来就OK了(再此结果上还应该加上字符串的长度,因为每个从头开始的字符串本身也可以去匹配自己的),即将next中值不为-1和0的个数统计出来即可。
用GCC编译的,时间用了46MS。
#include <stdio.h>
#include <string.h>
#define MAXLEN 200005
#define MOD 10007 int next[MAXLEN];
char myChar[MAXLEN]; int getNext()
{
int i = ,j = -;
int sum = ;
int len = strlen(myChar);
memset(next,,sizeof(int)); next[i] = j; while(i < len)
{
if(j == - || myChar[i] == myChar[j])
{
i ++;
j ++;
next[i] = j;
if(j != - && j != )
{
sum ++;
sum = sum % MOD;
}
}
else
{
j = next[j];
}
} return sum;
} int main()
{
int n,m; scanf("%d",&n);
while(n --)
{
scanf("%d",&m);
memset(myChar,,sizeof(char));
scanf("%s",myChar);
printf("%d\n",(getNext()+m)%MOD);
} return ;
}
代码如下:
hdu 3336【Count the string】(KMP)的更多相关文章
- HDU 3336 Count the string(KMP的Next数组应用+DP)
Count the string Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) ...
- 【HDU 3336】Count the string(KMP+DP)
Problem Description It is well known that AekdyCoin is good at string problems as well as number the ...
- 【HDU 3336 Count the string】
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission( ...
- hdu 3336 count the string(KMP+dp)
题意: 求给定字符串,包含的其前缀的数量. 分析: 就是求所有前缀在字符串出现的次数的和,可以用KMP的性质,以j结尾的串包含的串的数量,就是next[j]结尾串包含前缀的数量再加上自身是前缀,dp[ ...
- HDU 3336 - Count the string(KMP+递推)
题意:给一个字符串,问该字符串的所有前缀与该字符串的匹配数目总和是多少. 此题要用KMP的next和DP来做. next[i]的含义是当第i个字符失配时,匹配指针应该回溯到的字符位置. 下标从0开始. ...
- 【string】KMP, 扩展KMP,trie,SA,ACAM,SAM,最小表示法
[KMP] 学习KMP,我们先要知道KMP是干什么的. KMP?KMPLAYER?看**? 正如AC自动机,KMP为什么要叫KMP是因为它是由三个人共同研究得到的- .- 啊跑题了. KMP就是给出一 ...
- POJ 3336 Count the string (KMP+DP,好题)
参考连接: KMP+DP: http://www.cnblogs.com/yuelingzhi/archive/2011/08/03/2126346.html 另外给出一个没用dp做的:http:// ...
- HDU3336 Count the string 题解 KMP算法
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3336 题目大意:找出字符串s中和s的前缀相同的所有子串的个数. 题目分析:KMP模板题.这道题考虑 n ...
- hdu3336 Count the string 扩展KMP
It is well known that AekdyCoin is good at string problems as well as number theory problems. When g ...
随机推荐
- Microsoft Visual SourceSafe
Microsoft Visual SourceSafe是美国微软公司出品的版本控制系统,简称VSS.软件支持Windows系统所支持的所有文件格式,兼容Check out-Modify-Check i ...
- 关于mac mini组装普液晶显示器
申请了好久的mac mini,部门终于给买下来了.没想到,买回来之后的组装还是折腾了我们一把. 因为先前没用过mac mini,以为它和普通的台式机一样,买回来就能直接到显示器上用了.结果买回来ma ...
- 华人曾与IBM抗衡! 盘点已远去的IT巨头(转)
[PConline资讯 ]从算盘到计算器,从大型机到个人PC,再到当今火热的移动终端和云计算,人类计算史已经走过了千年之久,现代IT计算领域也经过了百年浮沉.在世界工业领域,IT技术应该是诞生时间最短 ...
- OAF_MDS系列2_OAF页面的通过MDS多语言开发国际化(案例)
2014-06-06 Created By BaoXinjian
- VMware和CentOS7安装和配置
准备工作: 下载: 1.VMware-workstation-full-10.0.0-1295980 2.CentOS-7-x86_64-DVD-1511.iso 安装: 1.VMware-works ...
- php 消息队列
本消息队列用于linux下,进程通信 #根据路径和后缀创建一个id $key = ftok(__DIR__, 'R'); #获取队列中的消息 $q = msg_get_queue($key); #删除 ...
- Note++ 的快捷
Notepad++绝对是windows下进行程序编辑的神器之一,要更快速的使用以媲美VIM,必须灵活掌握它的快捷键,下面对notepad++默认的快捷键做个整理(其中有颜色的为常用招数): Ctrl+ ...
- webuploader在同一个页面支持多个按钮实例
之前在时候用到webuploader ,起初是支持单实例,后来要求支持多实例. webuploder API网址,如果不懂我说的可以去查看http://fex.baidu.com/webuploade ...
- Cassandra在Windows上安装及使用方法
http://archive.apache.org/dist/cassandra/2.1.2/ http://docs.datastax.com/en/landing_page/doc/landing ...
- 30天轻松掌握JavaWeb_使用beanutils
导入commons-beanutils-1.8.3.jar及commons-logging-1.1.3.jar 使用commons-beanutils-1.8.3.jar包时需要同时使用commons ...