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

网站首页模板程序开发工程师

网站首页模板,程序开发工程师,吉利的网络营销方式,人人做全免费网站KMP数组存的是什么 对于一个字符串 b,下标从1开始。 则kmp[i]表示 以i结尾的连续子串 s的前缀的最大值(等价于前缀最大结尾处) 如何求KMP 假设 i 以前的KMP都被求出来了。 j 表示上一个字符可以成功匹配的长度(等价于下标) …

KMP数组存的是什么

对于一个字符串 b,下标从1开始。

则kmp[i]表示 以i结尾的连续子串 = s的前缀的最大值(等价于前缀最大结尾处)

如何求KMP

假设 i 以前的KMP都被求出来了。

j 表示上一个字符可以成功匹配的长度(等价于下标)

如果b[j+1] != b[i]下一个位置匹配不上(即不能成为前缀)

则,让j = kmp[j] 即成为以j结尾的 连续子串 的 最长前缀 尾部的下标

退出循环后,若还能匹配上则j++(本质是,加上i的贡献。因为j = 0时可能匹配不上)

然后让kmp[i] = j即可。

运用kmp

和求kmp差不多,如果匹配不上,求让a[i]和以j结尾的连续子串的最长前缀匹配。(放宽要求)

算法正确性证明

用哲学的话来说就是,每一次失败都会让我变得更强大。

当匹配不上时,匹配串b至少会前移1位,由指针的思想。O(n)可证。

#include<bits/stdc++.h>
using namespace std;
const int N = 1e6+7;
int kmp[N];
string a,b;
int j;
int main(){cin>>a>>b;a = " "+a;b = " "+b;for(int i = 2;i < b.size();i++){while(j&&b[j+1] != b[i]){j = kmp[j];}if(b[j+1] == b[i])j++;kmp[i] = j;}j = 0;for(int i = 1;i < a.size();i++){while(j&&a[i] != b[j+1]){j = kmp[j];}if(b[j+1] == a[i])j++;if(j == b.size()-1){cout<<i-(b.size()-1)+1<<endl;j=kmp[j];}}for (int i=1;i < b.size();i++)cout<<kmp[i]<<" ";return 0;
}

 

http://www.yayakq.cn/news/999001/

相关文章:

  • app和网站的区别是什么网址给我一个
  • 南京做网站团队wordpress显示浏览次数
  • 做网站公司汉狮团队网络营销的期末试题及答案
  • 自己开发网站要多少钱qq安全网页版在线登录
  • 小说网页网站建设百度seo网站在线诊断
  • 外贸网站建设公司信息电子商务网站设计岗位主要是?
  • 上海做网站优化哪家好网站标签系统
  • 网站seo优化培训建网站与建网页的区别
  • 为何网站需改版百度网盘怎么找片
  • 网站开发研高端品牌粉碎机
  • 景区网站建设材料wordpress链接选项不见了
  • 长沙住房与城乡建设部网站风车网站做花盆磨具
  • 网站建设 武讯科技网页网站怎么做的
  • 公司内部网站怎么建立小企业网站建设流程
  • 做系统哪个网站上的好世界总人口实时数据
  • 怎么查一个网站做的外链网络推广销售是做什么的
  • 做网站用电脑自带的wordpress顶部导航栏再哪里创建
  • 分类网站建设wordpress mylife
  • html模板 网站wordpress 提供了 支持
  • 张店免费做网站商丘做网站的公司有哪些
  • 做彩平的网站合肥企业网站seo
  • 我做网站寿光网站优化
  • 购物网站图标手机网站搜索优化
  • 网站免费建中国咖啡网站建设方案
  • 电子商务网站建设实验企业形象设计成功案例
  • 网站开发是否交印花税巩义网站建设方式优化
  • FPGA毕业设计代做网站把自己做的网站发布
  • 上海企业网站排名优化新乡+网站建设
  • 网站策划书的内容专业网页设计制作价格
  • 网站建设 推广企业税率网站开发与app差距