分析:

KMP算法:参考http://www.cnblogs.com/c-cloud/p/3224788.html,是一个线性处理字符串匹配问题的算法

在这里利用到next数组,记t[i]为长度为i的前缀出现的次数,显然t[n]=1。next[i]即为子串[0,i]的后缀与前缀重复的最长长度,因此可以统计一下next[i]的取值的个数,然后较长的前缀出现一次代表较短的前缀也一次,递推一下即可,复杂度为O(n)。

 1 #include<iostream>
 2 #include<cstring>
 3 #include<cstdio>
 4 using namespace std;
 5 const int maxn=1e5+5;
 6 typedef long long ll;
 7 int n,next[maxn],t[maxn];
 8 char s[maxn];
 9 int main(){
10    // freopen("e:\\in.txt","r",stdin);
11     cin>>s;
12     n=strlen(s);
13     memset(next,0,sizeof(next));
14     memset(t,0,sizeof(t));
15     int q,k;
16     for(q=1,k=0;q<n;q++){
17         while(k>0&&s[q]!=s[k]){
18             k=next[k-1];
19         }
20         if(s[k]==s[q])
21             k++;
22         next[q]=k;
23     }
24     for(int i=n;i>0;i--){
25         t[i]++;
26         t[next[i-1]]+=t[i];
27     }
28     ll ans=0;
29     for(int i=1;i<=n;i++){
30         if((ll)t[i]*i>ans)ans=(ll)t[i]*i;
31     }
32     cout<<ans<<endl;
33     return 0;
34 }

转载于:https://www.cnblogs.com/7391-KID/p/7156311.html

51nod 1277 字符串中的最大值(KMP算法)相关推荐

  1. 51nod 1292 字符串中的最大值V2(后缀自动机)

    题意: 有一个字符串T.字符串S的F函数值可以如下计算:F(S) = L * S在T中出现的次数(L为字符串S的长度).求所有T的子串S中,函数F(S)的最大值. 题解: 求T的后缀自动机,然后所有每 ...

  2. 数据结构(C语言版)严蔚敏(字符串的模式匹配算法--KMP算法)

    数据结构(C语言版)严蔚敏(字符串的模式匹配算法–KMP算法) 1.暴力匹配算法 // 暴力匹配算法 int Index2(SString S,SString T) {// S是主串,T是子串int ...

  3. 字符串的模式匹配,KMP算法

    KMP算法是模式匹配的一种改进的算法,所谓的模式匹配也就是对于两个字符串主串S和模式串T.从主串的S的pos个字符起和模式串中的第一个字符进行比较,如果相等,则继续比较后面的字符,否则从主串的下一个字 ...

  4. kmp算法详解php,php中字符串匹配KMP算法实现例子

    KMP算法是一个比较高级的算法了,加了改进了,下面我们来在php中实现KMP算法,希望例子对各位同学会带来帮助哦. kmp算法是一种改进的字符串匹配算法,由D.E.Knuth与V.R.Pratt和J. ...

  5. 统计字符串中单词个数的算法优化

    要求:输入一个字符串,统计每个单词的个数.单词间用空格隔开,可多个空格,写出自己认为高效的算法. 例如:输入:I love love China 输出为: I: 1 love: 2 China: 1 ...

  6. 求两个数中的最大值最小值算法

    给定两个数,用数学运算求出它们两中的最大的数和最小的数,设这两个数为a,b,最大值为max,最小值为min,则有 max = ((a+b)+|a-b|) / 2 ; min = ((a+b)-|a-b ...

  7. 字符串中找最大值-一个面试题引发的一个文章

    参考:火辣辣前端博客 题目:写一个函数,输入一段合法的字符数组(n<1024),请用JavaScript从字符数组中找出最大的数值,比如(asc23423v234),得到的最大数值是23423. ...

  8. 求单链表的最大值与原地逆转_数据结构:单链表中求最大值的算法。

    可以参考下面的代码: public static int FindMax(Node head) { if (head == null) return 0; int Max = head.value; ...

  9. BF算法和KMP算法

    给定两个字符串S和T,在主串S中查找子串T的过程称为串匹配(string matching,也称模式匹配),T称为模式.这里将介绍处理串匹配问题的两种算法,BF算法和KMP算法. BF算法 (暴力匹配 ...

  10. 程序员的算法课(11)-KMP算法

    一.KMP算法定义 [百度百科]KMP算法是一种改进的字符串匹配算法,由D.E.Knuth,J.H.Morris和V.R.Pratt提出的,因此人们称它为克努特-莫里斯-普拉特操作(简称KMP算法). ...

最新文章

  1. EF 调试跟踪生成的SQL语句
  2. 暑期集训2:ACM基础算法 练习题G:POJ - 1298
  3. 【codeforces 807C】Success Rate
  4. 【阿里云课程】深度学习模型设计:卷积核的设计与优化
  5. 非对称加密和对称加密的区别
  6. mysql 时间函数大全_mysql常用的日期函数汇总
  7. intellij IDEA 关于src等某些文件夹不能右键新建class文件问题
  8. mfc搜索新建access字段_vs2010MFC中使用ODBC链接ACCESS数据库,怎样编写查找功能?...
  9. 乐视云视频PHP接口操作视频上传,编辑,查询以及删除
  10. 【Choco Disco】MMD镜头+动作打包下载.zip
  11. 设计必备的配色工具01
  12. vue前后端分离图片无法显示的问题
  13. ECCV2022 Workshop | 复杂环境中的多目标跟踪和分割
  14. 什么是学习?如何学习?
  15. 【转】波利亚酒鬼回家定理的证明
  16. 命令行导入 .dmp文件,亲测可行
  17. JAVA异常记录(ORA-56900:pivot|unpivot 操作内不支持绑定变量)
  18. 交换机tftp服务器修改ip,二、利用TFTP服务器恢复交换机配置.ppt
  19. BlazePose: On-device Real-time Body Pose tracking
  20. HTML中表格和表单的简单构造和样式

热门文章

  1. eclipse配置xml的自动提示
  2. javascript call与apply关键字的作用
  3. 今天不是VS2005和SQL 2005在中国的正式发布日期吗?
  4. 【Java-Web】初始化加载Serlvet工程后-HttpServlet报错
  5. JDBC基础篇(MYSQL)——自定义JDBCUtil工具类
  6. [SDUT](3468)广度优先搜索练习之神奇的电梯 ---BFS(图)
  7. angular2组件通讯
  8. Codeforces Good Bye 2015 D. New Year and Ancient Prophecy 后缀数组 树状数组 dp
  9. php学习分享心得吧
  10. js常用正则表达式(经典)