摘要: 题目链接:http://poj.org/problem?id=3294 多个串中,出现次数为k次的最长公共子串的个数,并且输出。 一般的算法就是后缀数组加二分,复杂度O(n*logn)。其实也可以和POJ3415一样维护一个栈,思想都是差不多的,维护一个单调递增的栈,每到一个height[i]时,先保证栈单调递增并且统计个数sum,然后height[i]再与当前最优值比较,如果大于最优值,那么看sum是否大于k,如果大于则更新最优值。平均复杂度O(n)。 二分代码: 1 //STATUS:C++_AC_375MS_4328KB 2 #include<stdio.h> 3 #in.. 阅读全文
posted @ 2013-04-25 23:58 zhsl 阅读(245) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://poj.org/problem?id=3415 求两个串的长度不小于K的公共字串的个数。 利用height[]来维护一个单调递增的栈,即栈保存的是满足要求的heigiht数组的最小值,附加维护栈中相邻两个元素之间的个数。 1 //STATUS:C++_AC_813MS_6532KB 2 #include<stdio.h> 3 #include<stdlib.h> 4 #include<string.h> 5 #include<math.h> 6 #include<iostream> 7 #include< 阅读全文
posted @ 2013-04-25 23:44 zhsl 阅读(330) 评论(0) 推荐(0) 编辑
摘要: 程序员之路--关于代码风格 优秀的代码风格如同一身得体的打扮,能够给人以良好的印象。初学程序设计,首先必须建立良好的编程习惯,这其中就包括代码风格。本文就代码风格中的几个重点问题进行了讨论,并在文后给出了一份优秀的代码作为风格模板。代码风格不必花费太多专门的时间研究,在使用中不断模仿模板代码,轻轻松松就能写出“专业的代码”。一、80字符,代码行极限 无论时空怎么转变,世界怎样改变,一行80字符应始终铭记心间。古老的Unix终端以80列的格式显示文本,为了让源代码与手册具有最佳的可读性,Unix系统始终坚持着80列的传统。80列不多不少,足够写出一行有意义的代码,同时也足够显示在终端屏幕,足.. 阅读全文
posted @ 2013-04-25 18:21 zhsl 阅读(224) 评论(0) 推荐(0) 编辑