数据结构与高效算法
文章平均质量分 80
zyq_zhang
这个作者很懒,什么都没留下…
展开
-
最长上升子序列nlogn算法
这题目是经典的DP题目,也可叫作LIS(Longest Increasing Subsequence)最长上升子序列 或者 最长不下降子序列。很基础的题目,有两种算法,复杂度分别为O(n*logn)和O(n^2) 。A.O(n^2)算法分析如下: (a[1]...a[n] 存的都是输入的数) 1、对于a[n]来说,由于它是最后一个数,所以当从a[n]开始查找时,只存在长转载 2015-08-22 15:01:38 · 980 阅读 · 1 评论 -
深入浅出大数阶乘
大数阶乘的计算是一个有趣的话题,从中学生到大学教授,许多人都投入到这个问题的探索和研究之中,并发表了他们自己的研究成果。如果你用阶乘作关键字在google上搜索,会找到许多此类文章,另外,如果你使用google学术搜索,也能找到一些计算大数阶乘的学术论文。但这些文章和论文的深度有限,并没有给出一个高速的算法和程序。 我和许多对大数阶乘感兴趣的人一样,很早就开始编制大数阶乘的程序。从转载 2016-04-09 21:03:00 · 1981 阅读 · 0 评论 -
POJ KMP各类题型
如果要学习KMP的话,我推荐2篇博客,我觉得非常棒1:http://blog.csdn.net/v_july_v/article/details/70418272:http://www.matrix67.com/blog/archives/115下面是一些KMP类题:POJ3461题目链接:http://poj.org/problem?id=3461 这题就是KMP算法裸原创 2016-03-19 20:23:11 · 586 阅读 · 0 评论 -
八大排序算法
八大排序算法转载于:http://blog.csdn.net/hguisu/article/details/7776068目录(?)[+]概述排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存。我们这里说说八大排序就是内部排序。转载 2015-10-27 09:32:49 · 696 阅读 · 0 评论 -
Trie树详解及其应用
转载于:http://blog.csdn.net/hackbuteer1/article/details/7964147一、知识简介 最近在看字符串算法了,其中字典树、AC自动机和后缀树的应用是最广泛的了,下面将会重点介绍下这几个算法的应用。 字典树(Trie)可以保存一些字符串->值的对应关系。基本上,它跟 Java 的 HashMap 功能相同,都是 key转载 2015-09-11 19:43:07 · 394 阅读 · 0 评论 -
最长回文字符串
回文串定义:“回文串”是一个正读和反读都一样的字符串,比如“asddsa”或者“lovekevol”等等就是回文串。回文子串,顾名思义,即字符串中满足回文性质的子串。这里我给出通过枚举回文串的中间位置i,然后不断向外扩展,直达有字符不相同。注意,这里长度为奇数和偶数的处理方式是不一样的。下面给出代码:(这个算法并不高效,但是如果字符串较小的的话还是可以的,后面我会给出更加高效的算法)。#i原创 2015-09-09 10:48:13 · 461 阅读 · 0 评论 -
最长回文字符串_Manacher算法_(O(n))
朴素算法求最长回文字符串包括奇数长的和偶数长的,求的时候都要分情况讨论,Manacher算法做了一个简单的处理,很巧妙地把奇数长度回文串与偶数长度回文串统一考虑,也就是在每个相邻的字符之间插入一个分隔符,串的首尾也要加,当然这个分隔符不能再原串中出现,一般可以用‘#’或者‘$’等字符。例如:原串:abaabb新串:#a#b#a#a#b#b#这样一来,原来的奇数长度回文串还是奇数长度,偶原创 2015-09-09 18:33:05 · 1057 阅读 · 1 评论 -
HDU 5256
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5256Problem Description我们有一个数列A1,A2...An,你现在要求修改数量最少的元素,使得这个数列严格递增。其中无论是修改前还是修改后,每个元素都必须是整数。请输出最少需要修改多少个元素。 Input第一行输入一个T(1≤T原创 2015-08-25 14:23:20 · 473 阅读 · 0 评论 -
最大连续子序列算法(数组的连续子数组最大和(首尾不相连))
相关描述:连续子序列最大和,其实就是求一个序列中连续的子序列中元素和最大的那个。比如例如给定序列:{ -5,-2, 11, -4, 13, -5, -8 }其最大连续子序列为{ 11, -4, 13 },最大和为20。方法一:暴力 O(n^3)算法描述:暴力搞来就是枚举子序列的起点和终点,然后计算这一段的和,再通过不断地更新最大值即可。但是效率太低了。代原创 2015-08-30 16:10:33 · 2495 阅读 · 0 评论