poj3461—KMP裸题
2016-02-10 22:36
375 查看
题目大意:给出两个字符串p和s,求出p在s中出现的次数
注:真实的next数组是程序中的next数组值+1
#include <iostream> #include <cstring> #include <cstdio> #include <cstdlib> using namespace std; char p[10010],s[1000010]; int next[10010]; int lenp,lens,ans,m; void getnext() { next[0]=-1; int j=-1; for (int i=1;i<lenp;i++) { while (j>-1 && p[j+1]!=p[i]) j=next[j]; if (p[j+1]==p[i]) j++; next[i]=j; } } int KMP() { int j=-1,count=0; for (int i=0;i<lens;i++) { while (j>-1 && p[j+1]!=s[i]) j=next[j]; if (p[j+1]==s[i]) j++; if (j==lenp-1) { count++; j=next[j]; } } return count; } int main() { scanf("%d", &m); while (m--) { scanf("%s%s", p,s); lenp=strlen(p); lens=strlen(s); getnext(); ans=KMP(); printf("%d\n", ans); } }
注:真实的next数组是程序中的next数组值+1
相关文章推荐
- viewutils fragment invalid value for field
- 一位程序员工作10年总结的13个忠告,却让很多人惋惜
- jquery选择器(简易版)
- 实现在edittext中任意插入图片
- Spring之 Auto-Wiring All Beans of Compatible Type
- 【摘】Mysql备份还原数据库之mysqldump实例及参数详细说明
- vim的保存文件和退出命令
- 使用JavaScript动态的添加组件
- 使用JavaScript动态的添加组件
- 用c语言编曲
- 1009. Product of Polynomials (25)
- 1008. Elevator (20)
- 快速幂取模运算精讲
- 1007. Maximum Subsequence Sum (25)
- 【程序员在法国】一、辞别家乡千万里,组团空降法兰西
- 【程序员在法国】一、辞别家乡千万里,组团空降法兰西
- hdu-1097快速幂取模运算
- nefuoj-1011:最长循环节
- 网易新闻首页demo
- 递归创建级联目录之Python_VS_PHP