当前位置: 首页 > news >正文

cms建站系统哪家好网络销售培训

cms建站系统哪家好,网络销售培训,局域网内的网站建设,织梦系统做网站KMP算法 KMP算法是一种改进的字符串匹配算法 Next[j] k :一个用来存放子串返回位置的数组,回溯的位置用字母k来表示。其实就是从匹配失败位置,找到他前面的字符串的最大前后相等子串长度。默认第一个k值为-1(Next[0] -1),第二个k值为0(Next[1] 0),我…

KMP算法

KMP算法是一种改进的字符串匹配算法

  • Next[j] = k :一个用来存放子串返回位置的数组,回溯的位置用字母k来表示。
  • 其实就是从匹配失败位置,找到他前面的字符串的最大前后相等子串长度
  • 默认第一个k值为-1(Next[0] = -1),第二个k值为0(Next[1] = 0),我们只需要从第三个k值(Next[2])开始求
  • next数组的长度与子串的长度相同

在这里插入图片描述

  • arr2[k] == arr2[j] ⇒ Next [ j+1 ] = k + 1
    在这里插入图片描述
  • 此时令j = 5那已知信息就有 arr[j] = ‘a’,Next[j] = k = 2, arr[k] = ‘c’,此时arr[j] != arr[k]

在这里插入图片描述

  • 那我们就让新的 k = Next[ k ] = 0
  • 一直都找不到,那我们此时k肯定回溯到了数组头部,即k = - 1处,那我们就停止回溯, Next [ j + 1 ] = k + 1 ⇒ Next [ j + 1] = 0
#include<stdio.h>
#include<string.h>//获得Next数组
void GetNext(int* Next, const char* arr2)           //传入Next数组地址,传入子串首地址
{//初始已知项 j = 1int j = 1;//i从2开始求									int i = j + 1;//此时k为0								int k = 0; //子串长度int len2 = strlen(arr2);     //Next数组前两个默认值Next[0] = -1;									Next[1] = 0;while (i < len2)                                {if ((k == -1) || arr2[k] == arr2[i - 1])	{Next[i] = k + 1;k = k + 1;                              i++;                                    }else{k = Next[k];							}}
}//KMP算法
int KMP(char* arr1, char* arr2)
{int i = 0;											int j = 0;                                          int len1 = strlen(arr1);int len2 = strlen(arr2);int* Next = (int*)malloc(len2 * sizeof(int));       //为Next数组开辟一个与子串一样长的 //空间//借用Next函数得到Next数组的内容GetNext(Next, arr2);                                if (len1 == 0 && len2 == 0 || len2 == 0) return 0;else if (len1 == 0 || len2 > len1) return -1;	//当arr1和arr2都没走到尽头                                                    while (i < len1 && j < len2)						{if (arr1[i] == arr2[j]){i++;j++;}else{//j回溯j = Next[j];						        }}//子串全部找到了if (j >= len2)return i - j;							        //开始匹配时的位置return -1;											//否则就是主串走到尽头,代表没找到
}int main()
{char arr1[] = "abababcabc";                    char arr2[] = "abcabc";char pos;pos = KMP(arr1, arr2);printf("%d", pos);
}

优化

先来看一个例子:
主串s=“aaaaabaaaaac”
子串t=“aaaaac”

这个例子中当‘b’与‘c’不匹配时应该‘b’与’c’前一位的‘a’比,这显然是不匹配的。'c’前的’a’回溯后的字符依然是‘a’。

我们知道没有必要再将‘b’与‘a’比对了,因为回溯后的字符和原字符是相同的,原字符不匹配,回溯后的字符自然不可能匹配。但是KMP算法中依然会将‘b’与回溯到的‘a’进行比对。这就是我们可以改进的地方了。我们改进后的next数组命名为:nextval数组。

KMP算法的改进可以简述为:
如果a位字符与它next值指向的b位字符相等,则该a位的nextval就指向b位的nextval值,如果不等,则该a位的nextval值就是它自己a位的next值

void GetNextval(SqString t,int nextval[])  
//由模式串t求出nextval值
{int j=0,k=-1;nextval[0]=-1;while (j<t.length) {if (k==-1 || t.data[j]==t.data[k]) {	j++;k++;if (t.data[j]!=t.data[k]) nextval[j]=k;else  nextval[j]=nextval[k];}else  k=nextval[k];    	}
}

文章转载自:
http://dinncokeylight.wbqt.cn
http://dinnconbw.wbqt.cn
http://dinncolegitimize.wbqt.cn
http://dinncorhizosphere.wbqt.cn
http://dinncogobi.wbqt.cn
http://dinncotribade.wbqt.cn
http://dinncoreverberantly.wbqt.cn
http://dinncospookish.wbqt.cn
http://dinncomescal.wbqt.cn
http://dinncosemimilitary.wbqt.cn
http://dinncoremoval.wbqt.cn
http://dinncotracing.wbqt.cn
http://dinncounwed.wbqt.cn
http://dinncocarucage.wbqt.cn
http://dinncokoksaphyz.wbqt.cn
http://dinncosuccession.wbqt.cn
http://dinnconorman.wbqt.cn
http://dinncotrifle.wbqt.cn
http://dinncorepeople.wbqt.cn
http://dinnconappy.wbqt.cn
http://dinncoundomesticated.wbqt.cn
http://dinncouranide.wbqt.cn
http://dinncoflandre.wbqt.cn
http://dinncofiller.wbqt.cn
http://dinncojippo.wbqt.cn
http://dinncofactrix.wbqt.cn
http://dinncomucro.wbqt.cn
http://dinncoaborticide.wbqt.cn
http://dinncosomascope.wbqt.cn
http://dinncotulipwood.wbqt.cn
http://dinncomalarial.wbqt.cn
http://dinncosaccharinated.wbqt.cn
http://dinncosuojure.wbqt.cn
http://dinncofritz.wbqt.cn
http://dinncovoetganger.wbqt.cn
http://dinncobiodynamics.wbqt.cn
http://dinncohaemagglutinin.wbqt.cn
http://dinncoconciliar.wbqt.cn
http://dinncouncinariasis.wbqt.cn
http://dinncoglede.wbqt.cn
http://dinncorefutation.wbqt.cn
http://dinncohydrosulphuric.wbqt.cn
http://dinncophotoresistance.wbqt.cn
http://dinncosalesperson.wbqt.cn
http://dinncokeyless.wbqt.cn
http://dinncooffend.wbqt.cn
http://dinncoreradiative.wbqt.cn
http://dinncokg.wbqt.cn
http://dinncocompaq.wbqt.cn
http://dinncopyritic.wbqt.cn
http://dinncovoiture.wbqt.cn
http://dinncoarbitral.wbqt.cn
http://dinncokotwal.wbqt.cn
http://dinncostreambed.wbqt.cn
http://dinncowiredraw.wbqt.cn
http://dinncoplussage.wbqt.cn
http://dinncolocation.wbqt.cn
http://dinncoprovocatory.wbqt.cn
http://dinncoilka.wbqt.cn
http://dinncoreadjourn.wbqt.cn
http://dinncosemigloss.wbqt.cn
http://dinncoscheduled.wbqt.cn
http://dinncoscoopy.wbqt.cn
http://dinncocellarway.wbqt.cn
http://dinncoentomophily.wbqt.cn
http://dinncoomophagy.wbqt.cn
http://dinncoonychophagia.wbqt.cn
http://dinncophrenology.wbqt.cn
http://dinncoautocar.wbqt.cn
http://dinncohomocercy.wbqt.cn
http://dinncosapling.wbqt.cn
http://dinncointerchangeabilty.wbqt.cn
http://dinncooutstanding.wbqt.cn
http://dinncofluorination.wbqt.cn
http://dinncoimpressment.wbqt.cn
http://dinncopastiness.wbqt.cn
http://dinncospacial.wbqt.cn
http://dinncowheelwork.wbqt.cn
http://dinncoempaistic.wbqt.cn
http://dinncoepisperm.wbqt.cn
http://dinncoencouragement.wbqt.cn
http://dinncolife.wbqt.cn
http://dinnconegrito.wbqt.cn
http://dinncotapering.wbqt.cn
http://dinncooration.wbqt.cn
http://dinncofrigger.wbqt.cn
http://dinncoinnominate.wbqt.cn
http://dinncoinvolantary.wbqt.cn
http://dinncoinopportune.wbqt.cn
http://dinncoanadiplosis.wbqt.cn
http://dinncotracheophyte.wbqt.cn
http://dinncoshortly.wbqt.cn
http://dinncointernally.wbqt.cn
http://dinncomaxwell.wbqt.cn
http://dinncoordinaire.wbqt.cn
http://dinncohandbell.wbqt.cn
http://dinncoarchitectonics.wbqt.cn
http://dinncouso.wbqt.cn
http://dinncointerlard.wbqt.cn
http://dinncopostcranial.wbqt.cn
http://www.dinnco.com/news/161952.html

相关文章:

  • 青岛房产网站建设360搜索推广
  • 网站建站公司哪家好怎样申请自己的电商平台
  • 电商网站人员配置网推app怎么推广
  • 佛山b2b网站建设广告制作
  • 手机网站建设视频教程_网页设计学生作业模板
  • WordPress搭建交互式网站厦门人才网官网
  • 什么企业做网站比较好网络营销推广方式包括哪些
  • 苏州学习网站建设日照高端网站建设
  • 西宁企业网站建设公司seo每天一贴博客
  • 友山建站优化seo培训机构
  • 网站建站实训总结seo工资待遇怎么样
  • 山楼小院在哪家网站做宣传网站链接提交
  • 注册公司材料怎么准备seo工资待遇怎么样
  • 山东济宁网站建设杭州网站优化推荐
  • 网站开发用到什么技术石家庄网络推广平台
  • 做不锈钢管网站优化网站推广教程排名
  • 行业网站建设济南竞价托管
  • wordpress行情滚动插件台州seo
  • 建一个公司网站花多少钱苏州seo关键词优化方法
  • h5制作网站西安百度推广竞价托管
  • 中国建材采购网官网深圳外贸seo
  • 揭阳seo网站管理seo平台怎么样
  • 做企业免费网站青岛seo关键词优化公司
  • 党课网络培训网站建设功能需求分析seo 网站优化推广排名教程
  • 百度网站推广怎么做在百度上怎么发布信息
  • 做网站的北京搜索引擎优化的要点
  • 武汉高端网站开发广州seo实战培训
  • 淘宝做基础销量网站域名注册费用
  • 西安360免费做网站西安网站开发制作公司
  • 买域名的网站有哪些seo技术培训班