#include <stdio.h>
#include <string.h>
using namespace std;
const int maxn = 1000000+10;
char s[maxn],t[maxn];
int next[maxn];
int m,n,k,l,i,T;
void get_next(char str[])
{
memset(next,0,sizeof(next));
next[1] = 0;
int len = strlen(str+1),k=0;
for(int i=2;i<=len;i++)
{
if(k>0&&str[i]!=str[k+1])
k = next[k];
if(str[i]==str[k+1])
k++;
next[i] = k;
}
}
int kmp(char s[],char t[])
{
get_next(s);
int lent = strlen(t+1);
int lens = strlen(s+1);
int k=0,ans=0;
for(int i=1;i<=lent;i++)
{
if(k>0&&t[i]!=s[k+1])
k = next[k];
if(t[i]==s[k+1])
k++;
if(k==lens)
{
ans++;
k = next[k];
}
}
return ans;
}
int main()
{
scanf("%d",&T);
while(T--)
{
scanf("%s",s+1);
scanf("%s",t+1);
printf("%d\n",kmp(s,t));
}
return 0;
}
分享到:
相关推荐
《KMP算法在POJ题目中的应用》 KMP(Knuth-Morris-Pratt)算法,是一种在字符串中寻找子串的搜索算法,由Donald Knuth、Vaughan Pratt和James H. Morris三位学者于1970年代提出。在编程竞赛如POJ(Problemset On...
KMP是来自韩国的全能播放器,现在虽然还在开发,但原作者已转投potplayer研发,此版本是原作者最后开发的版本,XP下无敌的存在。解压密码:www.nautc.com
kmp 算法 模版 kmp 算法 模版
* KMP 算法:例如 poj1961、poj2406。 4. 搜索: * 最优化剪枝和可行性剪枝。 * 搜索的技巧和优化:例如 poj3411、poj1724。 * 记忆化搜索:例如 poj3373、poj1691。 5. 动态规划: * 较为复杂的动态规划:...
- 字符串处理:如KMP算法和后缀数组,用于字符串搜索和模式匹配,如`poj1035, poj3080`。 - 排序算法:如快速排序和归并排序,用于对数据进行排序,如`poj2388, poj2299`。 - 并查集:用于处理集合的合并和查询...
算法 KMP算法 KMP算法 KMP算法 KMP算法 KMP算法 KMP算法 KMP算法 KMP算法 KMP算法 KMP算法 KMP算法 KMP
如Trie树(前缀树)、KMP算法,用于字符串匹配和索引构建,见poj2513和poj1961。 #### 排序 快速排序、归并排序和堆排序等,不仅用于排序,也常用于解决与逆序数相关的问题,如poj2388。 #### 并查集 用于处理集合...
《KMP算法与通配符支持在字符串匹配中的应用》 KMP算法,全称Knuth-Morris-Pratt算法,是一种高效的字符串匹配算法,它由Donald Knuth、James H. Morris和 Vaughan Pratt三位学者于1977年提出。在计算机科学中,...
此程序配合清华大学出版《数据结构(C语言版)》 P83-84页的KMP算法 win tc调试通过
7. **数学**:poj1286、poj2409等继续深入组合数学,poj1226、poj1961等训练了KMP算法,poj3440、poj3071等涉及概率问题和高斯消元法。 这个训练计划通过精心挑选的题目,逐步提升编程者的算法思维和实现能力,为...
6. **KMP算法**: - (poj1961, poj2406):高效的字符串匹配算法。 ### 十、进阶状态压缩 1. **状态压缩技巧**: - 如何高效地表示和压缩状态。 2. **状态压缩优化**: - (poj3411, poj1724):进一步提高状态...
例如,题目poj1961和poj2406就是KMP算法的应用实例。 ### 7. 几何算法 几何算法涉及点、线、面的性质和关系,如凸包、最近点对、三角剖分等问题。这些算法在计算机图形学、地理信息系统等领域有着广泛的应用。例如...
子串定位KMP(加强版):深入解析与优化策略 在计算机科学中,字符串匹配算法是处理文本数据的关键技术之一,广泛应用于搜索引擎、DNA序列分析、文本编辑器的拼写检查等多个领域。其中,Knuth-Morris-Pratt算法...
【标题】"POJ 解题报告集合"是一个珍贵的学习资源,包含了编程爱好者在解决POJ(Programming Online Judge)平台上的100多道题目后的详细分析与解答。POJ是著名的在线编程竞赛平台,它提供了丰富的算法题目,帮助...
2. **POJ1790**:可能涉及字符串的模式匹配,如KMP算法或Boyer-Moore算法,用于在一个字符串中寻找另一个字符串的出现位置。 3. **POJ1951**:可能与字符串的排序有关,比如可以运用Manacher's Algorithm解决最长...
KMP(Knuth-Morris-Pratt)算法是一种在文本串(text)中查找模式串(pattern)出现位置的字符串匹配算法。它是由D.E. Knuth、V.R. Morris和J.H. Pratt于1977年提出的。KMP算法避免了模式串在匹配过程中不必要的字符...
KMP算法,全称为Knuth-Morris-Pratt算法,是一种高效的字符串匹配算法,由Donald Knuth、Vaughan Morris和Robert Pratt三位学者提出。它的主要目标是在一个长字符串(主串A)中查找是否存在一个指定的短字符串(模式...
### KMP算法 Java 版详解 #### 一、KMP算法概述 KMP(Knuth-Morris-Pratt)算法是一种高效的字符串匹配算法,由Donald Knuth、James H. Morris和Vaughan Pratt三位计算机科学家共同提出。相较于朴素的字符串匹配...
KMP(Knuth-Morris-Pratt)算法是一种在文本字符串中高效地查找子串的算法,由D.E. Knuth、V.R. Morris和J.H. Pratt在1970年代提出。这个算法避免了在匹配过程中频繁的回溯,极大地提高了查找效率。在给定的"KMP.rar...
5. **字符串匹配**:如KMP算法(poj1961, poj2406)。 ### 十三、进阶算法 1. **组合优化**:如割平面法、分支定界法等(poj3411, poj1724)。 2. **近似算法**:解决NP难问题时的近似求解方法(poj3373, poj1691...