热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

kmp算法程序C语言,KMP算法C语言程序实现

*KMP算法*#include#include#includeusingnamespacestd;voidgetNext(chara[],intnext[]){inti,j;nex

//

/*KMP算法*/

#include

#include

#include

using namespace std;

void getNext(char a[],int next[]){

int i,j;

next[1] = 0;

j = 0;

i = 2;

int m = strlen(a)-1; //从a[1]开始

while(i<&#61;m){

if(a[j&#43;1] &#61;&#61; a[i]){

j&#43;&#43;; next[i&#43;&#43;] &#61; j;

}

else if(j&#61;&#61;0){

next[i&#43;&#43;] &#61; 0;

}else if(j>0){

j &#61; next[j];

}

}

}

int match(char a[],char b[],int next[]){

int i&#61;0,j&#61;0;

int pos;

int n &#61; strlen(a)-1;

int m &#61; strlen(b)-1;

while(1){

if(i>n) {

pos &#61; -1; break;

}

if(j&#61;&#61;m){

//pos &#61; i-j&#43;1; break;

cout<

}

if(b[j&#43;1] &#61;&#61; a[i&#43;1] ){

j&#43;&#43;; i&#43;&#43;;

}else{

if(j&#61;&#61;0) i&#43;&#43;;

else if (j>0){

j &#61; next[j];

}

}

}

}

/*

int main()

{

//char b[] &#61; "!ababbc";

char b[] &#61; "!abab";

int l &#61; strlen(b);

int *next &#61; new int[l-1];

getNext(b,next);

int i;

for(i&#61;1;i<&#61;l-1;i&#43;&#43;){

printf("%d ",next[i]);

}

cout<

char a[] &#61; "!ababababbc";

int pos &#61; match(a,b,next);

cout<

}

*/

//

/*

KMP应用&#xff1a; 求一个串中所有前缀等于后缀的子串长度

*/

void output(int i,int next[]){

while(next[i]>0){

cout<

i &#61; next[i];

}

}

/*

int main()

{

char b[] &#61; "!ababa";

int l &#61; strlen(b);

int *next &#61; new int[l-1];

getNext(b,next);

int i;

for(i&#61;1;i<&#61;l-1;i&#43;&#43;){

printf("%d ",next[i]);

}

cout<

output(l-1,next);

delete[] next;

}

*/

标签&#xff1a;

版权申明&#xff1a;本站文章部分自网络&#xff0c;如有侵权&#xff0c;请联系&#xff1a;west999com&#64;outlook.com

特别注意&#xff1a;本站所有转载文章言论不代表本站观点&#xff01;

本站所提供的图片等素材&#xff0c;版权归原作者所有&#xff0c;如需使用&#xff0c;请与原作者联系。



推荐阅读
  • C语言判断正整数能否被整除的程序
    本文介绍了使用C语言编写的判断正整数能否被整除的程序,包括输入一个三位正整数,判断是否能被3整除且至少包含数字3的方法。同时还介绍了使用qsort函数进行快速排序的算法。 ... [详细]
  • c语言\n不换行,c语言printf不换行
    本文目录一览:1、C语言不换行输入2、c语言的 ... [详细]
  • 动态规划算法的基本步骤及最长递增子序列问题详解
    本文详细介绍了动态规划算法的基本步骤,包括划分阶段、选择状态、决策和状态转移方程,并以最长递增子序列问题为例进行了详细解析。动态规划算法的有效性依赖于问题本身所具有的最优子结构性质和子问题重叠性质。通过将子问题的解保存在一个表中,在以后尽可能多地利用这些子问题的解,从而提高算法的效率。 ... [详细]
  • 本文介绍了在Windows系统上使用C语言命令行参数启动程序并传递参数的方法,包括接收参数程序的代码和bat文件的编写方法,同时给出了程序运行的结果。 ... [详细]
  • 本文介绍了GTK+中的GObject对象系统,该系统是基于GLib和C语言完成的面向对象的框架,提供了灵活、可扩展且易于映射到其他语言的特性。其中最重要的是GType,它是GLib运行时类型认证和管理系统的基础,通过注册和管理基本数据类型、用户定义对象和界面类型来实现对象的继承。文章详细解释了GObject系统中对象的三个部分:唯一的ID标识、类结构和实例结构。 ... [详细]
  • 本文介绍了一种求解最小权匹配问题的方法,使用了拆点和KM算法。通过将机器拆成多个点,表示加工的顺序,然后使用KM算法求解最小权匹配,得到最优解。文章给出了具体的代码实现,并提供了一篇题解作为参考。 ... [详细]
  • C语言自带的快排和二分查找
    Author🚹:CofCaiEmail✉️:cai.dongjunnexuslink.cnQQ😙:1664866311personalPage&#x ... [详细]
  • 《数据结构》学习笔记3——串匹配算法性能评估
    本文主要讨论串匹配算法的性能评估,包括模式匹配、字符种类数量、算法复杂度等内容。通过借助C++中的头文件和库,可以实现对串的匹配操作。其中蛮力算法的复杂度为O(m*n),通过随机取出长度为m的子串作为模式P,在文本T中进行匹配,统计平均复杂度。对于成功和失败的匹配分别进行测试,分析其平均复杂度。详情请参考相关学习资源。 ... [详细]
  • Linux环境变量函数getenv、putenv、setenv和unsetenv详解
    本文详细解释了Linux中的环境变量函数getenv、putenv、setenv和unsetenv的用法和功能。通过使用这些函数,可以获取、设置和删除环境变量的值。同时给出了相应的函数原型、参数说明和返回值。通过示例代码演示了如何使用getenv函数获取环境变量的值,并打印出来。 ... [详细]
  • 本文介绍了PE文件结构中的导出表的解析方法,包括获取区段头表、遍历查找所在的区段等步骤。通过该方法可以准确地解析PE文件中的导出表信息。 ... [详细]
  • 本文介绍了一个题目的解法,通过二分答案来解决问题,但困难在于如何进行检查。文章提供了一种逃逸方式,通过移动最慢的宿管来锁门时跑到更居中的位置,从而使所有合格的寝室都居中。文章还提到可以分开判断两边的情况,并使用前缀和的方式来求出在任意时刻能够到达宿管即将锁门的寝室的人数。最后,文章提到可以改成O(n)的直接枚举来解决问题。 ... [详细]
  • 3.223.28周学习总结中的贪心作业收获及困惑
    本文是对3.223.28周学习总结中的贪心作业进行总结,作者在解题过程中参考了他人的代码,但前提是要先理解题目并有解题思路。作者分享了自己在贪心作业中的收获,同时提到了一道让他困惑的题目,即input details部分引发的疑惑。 ... [详细]
  • 开发笔记:实验7的文件读写操作
    本文介绍了使用C++的ofstream和ifstream类进行文件读写操作的方法,包括创建文件、写入文件和读取文件的过程。同时还介绍了如何判断文件是否成功打开和关闭文件的方法。通过本文的学习,读者可以了解如何在C++中进行文件读写操作。 ... [详细]
  • 本文介绍了最长上升子序列问题的一个变种解法,通过记录拐点的位置,将问题拆分为左右两个LIS问题。详细讲解了算法的实现过程,并给出了相应的代码。 ... [详细]
  • C语言常量与变量的深入理解及其影响
    本文深入讲解了C语言中常量与变量的概念及其深入实质,强调了对常量和变量的理解对于学习指针等后续内容的重要性。详细介绍了常量的分类和特点,以及变量的定义和分类。同时指出了常量和变量在程序中的作用及其对内存空间的影响,类似于const关键字的只读属性。此外,还提及了常量和变量在实际应用中可能出现的问题,如段错误和野指针。 ... [详细]
author-avatar
与天使有染的救赎_164
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有