`
人生难得糊涂
  • 浏览: 117896 次
社区版块
存档分类
最新评论

POJ3461-KMP算法的简单运用

 
阅读更多

 

求一个主串中有多少个给定的子串

直接KMP模板就OK了

#include<iostream>
using namespace std;
#define  len  1000100
char s[len];
char t[len];
int next[len];

void getnext()
{
	int i=0;
	int j=-1;
	next[0]=-1;
	int lent=strlen(t);
	while(i<lent)
	{
		if (j==-1||t[i]==t[j])
		{
			i++;
			j++;
			next[i]=j;
		}
		else
		{

			j=next[j];
		}
	}
}


int KMP()
{
	int i=0;
	int j=0;
	int  k=0;
	int slen=strlen(s);
	int tlen=strlen(t);
	getnext();
	while (i<slen)
	{
		if (j==-1||s[i]==t[j])
		{
			i++;
			j++;
			if (j==tlen)
			{
				k++;
			}
			//next[i]=j;
		}
		else
		{

			j=next[j];
		}
	}
	return k;
}
int main()
{
	int num;
	scanf("%d",&num);
	while (num--)
	{
		scanf("%s",t);
		scanf("%s",s);
		cout<<KMP()<<endl;
	}
	
	//cout<<endl;
}

 

 

 

0
0
分享到:
评论

相关推荐

    北大POJ初级-基本算法

    7. **字符串处理**:如KMP算法、Rabin-Karp算法、Boyer-Moore算法等,用于高效地进行字符串匹配。 8. **回溯与分支限界**:用于解决组合优化问题,如八皇后问题、N皇后问题、旅行商问题等。 9. **数据结构**:如数...

    北大POJ中级-基本算法

    5. 字符串处理:KMP算法、Rabin-Karp算法等,对于字符串匹配问题至关重要。 6. 数组与链表:数据结构基础,理解和熟练操作数组和链表是解决算法问题的前提。 二、解题策略与AC代码分析 在POJ的中级算法中,我们通常...

    ACM-POJ 算法训练指南

    5. **字符串匹配**:如KMP算法(poj1961, poj2406)。 ### 十三、进阶算法 1. **组合优化**:如割平面法、分支定界法等(poj3411, poj1724)。 2. **近似算法**:解决NP难问题时的近似求解方法(poj3373, poj1691...

    POJ1000-1299中的80题AC代码

    3. **字符串处理**:KMP算法、Rabin-Karp算法、Manacher's Algorithm等字符串匹配方法,以及字符串的逆序、子串查找、模式匹配等相关操作。 4. **数学**:数论(最大公约数、最小公倍数、质因数分解、模运算等)、...

    算法训练方案详解

    - **示例题目**: POJ 3267, POJ 1836, POJ 1260, POJ 2533, POJ 3176, POJ 1080, POJ 1159 - **注意事项**: 理解每种模型的状态定义和转移方程。 #### 六、数学 **1. 组合数学** - **定义**: 研究组合结构的...

    acm新手刷题攻略之poj

    - 字符串匹配算法如KMP算法可以提高字符串匹配的效率。 以上列举的题目只是冰山一角,POJ上还有更多类型的题目等待着大家去探索。通过不断练习这些题目,可以逐渐建立起解决各类问题的能力,为参加更高级别的竞赛...

    KMP.rar_kmp poj

    在POJ上,有许多题目涉及字符串匹配,比如"KMP.rar_kmp poj"中的题目,正是要求参赛者运用KMP算法解决问题。通过编写源代码,我们可以实现KMP算法,解决这些题目。在实际编程中,通常需要考虑边界条件、错误处理以及...

    poj训练计划.doc

    - 字符串处理:如KMP算法和后缀数组,用于字符串搜索和模式匹配,如`poj1035, poj3080`。 - 排序算法:如快速排序和归并排序,用于对数据进行排序,如`poj2388, poj2299`。 - 并查集:用于处理集合的合并和查询...

    POJ 3000-3700中的近100题AC代码

    - `3682`:可能涉及到字符串匹配算法,如KMP、Rabin-Karp或Boyer-Moore,或者需要处理特定的字符串操作,如反转、查找子串等。 4. **数据结构**(Data Structures): - `3062`:可能需要用到栈、队列、堆、...

    经典 的POJ 分类

    - POJ 1961、POJ 2406:KMP算法的应用。 ### 其他问题 #### 贪心算法 - **题目示例**: - POJ 3411、POJ 1724:贪心策略的选择与应用。 #### 二分查找 - **题目示例**: - POJ 3373、POJ 1691:二分查找技术的...

    ACM 题型

    - **KMP算法** - 示例题目:poj1961, poj2406 #### 高级动态规划 1. **矩阵乘法** - 示例题目:poj1191, poj1054, poj3280, poj2029, poj2948, poj1925, poj3034 2. **四边形不等式** - 示例题目:POJ3254, ...

    POJ题目分类

    - **内容**: 包括KMP算法等字符串匹配算法。 - **示例题目**: 未给出具体题目 #### 2. 字符串处理 - **内容**: 包括字符串的基本操作如拼接、分割等。 - **示例题目**: poj2488, poj3083, poj3009, poj1321, poj...

    POJ 分类题目 txt文件

    例如,题目poj1961和poj2406就是KMP算法的应用实例。 ### 7. 几何算法 几何算法涉及点、线、面的性质和关系,如凸包、最近点对、三角剖分等问题。这些算法在计算机图形学、地理信息系统等领域有着广泛的应用。例如...

    poj题目分类

    * KMP 算法:例如 poj1961、poj2406。 4. 搜索: * 最优化剪枝和可行性剪枝。 * 搜索的技巧和优化:例如 poj3411、poj1724。 * 记忆化搜索:例如 poj3373、poj1691。 5. 动态规划: * 较为复杂的动态规划:...

    ACMer需要掌握的算法讲解 (2).docx

    * KMP算法:POJ1961、POJ2406 * 左偏树(可合并堆) 四、搜索 * 最优化剪枝和可行性剪枝 * 较为复杂的动态规划:POJ1191、POJ1054、POJ3280、POJ2029、POJ2948、POJ1925、POJ3034 * 记录状态的动态规划:POJ3254、...

    string-problem(POJ).rar_POJ 19_poj

    2. **POJ1790**:可能涉及字符串的模式匹配,如KMP算法或Boyer-Moore算法,用于在一个字符串中寻找另一个字符串的出现位置。 3. **POJ1951**:可能与字符串的排序有关,比如可以运用Manacher's Algorithm解决最长...

    ACM常用算法及其相应的练习题.docx

    ACM常用算法及其相应的练习题 本资源总结了 ACM 竞赛中常用的算法和相应的练习题,涵盖了基础算法、图...* KMP算法 + poj1961, poj2406 四、搜索 * 最优化剪枝和可行性剪枝 * 搜索的技巧和优化 + poj3411, poj1724

    KM匹配题集

    **KMP算法题集** KMP(Knuth-Morris-Pratt)算法是一种字符串匹配算法,主要用于在主串中查找子串出现的位置。这个算法避免了在遇到不匹配字符时的回溯,提高了搜索效率。KMP算法的核心是构造一个部分匹配表(也叫...

    acm训练计划(poj的题)

    6. **KMP算法**: - (poj1961, poj2406):高效的字符串匹配算法。 ### 十、进阶状态压缩 1. **状态压缩技巧**: - 如何高效地表示和压缩状态。 2. **状态压缩优化**: - (poj3411, poj1724):进一步提高状态...

    poj各种分类

    如Trie树(前缀树)、KMP算法,用于字符串匹配和索引构建,见poj2513和poj1961。 #### 排序 快速排序、归并排序和堆排序等,不仅用于排序,也常用于解决与逆序数相关的问题,如poj2388。 #### 并查集 用于处理集合...

Global site tag (gtag.js) - Google Analytics