kmp算法完整代码(C++)谢谢!
#include“stdio.h“
#include “conio.h“
#include “stdio.h“
#include “math.h“
int result;
char pat=“kaka“;
char str=“iamkaka“;
int next;
void getNext(char pat)
{
int j = 0;
int k = -1;
next = -1;
while (pat)
{
if ( k == -1 || pat)
{
j++;
k++;
next = k;
}
else
{
k = next;
}
}
}
int KMP(char *str1, char*pat, int *next)
{
int i=0,j=0;
while(str)
{
if(pat==0)
return i-j;
if(j==0 || str)
{
++i;
++j;
}else
j=next;
}
if(pat==0)
return i-j;
return -1;
}
int main(int argc, char* argv)
{
int i;
getNext(pat,next);
result=KMP(str,pat,next);
printf(“%s\n“,str);
for(i=0;i《result;i++) printf(“ “);
printf(“%s\n“,pat);
printf(“at %d\n“,result);
getch();
return 0;
}
这个算法有点难理解的
Dev-C++ 编译测试通过:
结果:
iamkaka
kaka
at 3
祝你好运!
这种题目考试有必杀技的。我用颜色标注了的,但是这里不能用颜色来讲解NExt数组的变化。
有需要。给我留言!
在新一代无线局域网安全协议中,采用AES算法来产生消息认证码,其中AES算法的加密模式是什么
AES,高级加密标准(英语:高级加密标准,缩写:AES),该标准用于替换原始DES,该DES已由多方分析,并在世界上广泛使用。包括AES-ECB,AES-CBC,AES-CTR,AES-OFB,AES-CFB
java(树的内容)算法与数据结构
实际上,有两种方法:第一个是光标形状的树菜单。该方法不应保存字符串类型。它是自定义的自定义“ a”。列表中的列表以及您拥有多少层。实际上要处理第二个层,也就是说,原始数据按照某些规则在列表中排序,这些规则将不再嵌套列表。列表就像您的效果图。第一个级别的节点“”其儿子节点;然后,第二个第一级节点“” Qi节点等。但是,当存储此结构时,必须将其循环到上述顺序。服用时,您需要确定哪个是下一个不同级别的开头。JS前台的显示相对简单,只需根据父ID直接添加它,而原始数据无需做完。但是在Java中这样做不好。-kmp算法