- 博客(9)
- 资源 (14)
- 问答 (1)
- 收藏
- 关注
原创 【动态规划】求最长公共子串,最长回文子串
题目 : 给定两个字符串,求出它们之间连续的最长的相同子字符串的长度。 eg : fbaabe,ebaabf,连续最长子串长度为4。 注意:求最长回文子串也可以用求最长公共子串来求,只需将字符串反转作为另外一个字符串,回文部分反转之后不变,然后求LCS(Longest common substring)即可。 求最长公共子串通常两种方法:第一暴力,第二,动态规划。这里分别给出。 1. ...
2015-09-30 20:46:54 748
原创 【动态规划】求最长公共子序列
最长公共子串和最长公共子序列的区别: 最长公共子串和最长公共子序列的区别为:子串是串的一个连续的部分,子序列则是从不改变序列的顺序,而从序列中去掉任意的元素而获得新的序列;也就是说,子串中字符的位置必须是连续的,子序列则可以不必连续。 题目:求两个字符串中的最长公共子序列。 比如: string s1 = “ABCBDAB”; string s2 = “BDCABA”;它们的lcs是:BCB
2015-09-30 20:45:43 768
原创 【动态规划】求一维子数组的最大和
题目:输入一个整形数组,数组里有正数也有负数。数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。求所有子数组的和的最大值。要求时间复杂度为O(n)。 例如,输入的数组为1, -2, 3, 10, -4, 7, 2, -5,和最大的子数组为3, 10, -4, 7, 2,因此输出为该子数组的和18。 思路:设sum[i]为以第i个元素结尾且和最大的连续子数组。假设对于元素i,所有以...
2015-09-30 20:43:39 1491
原创 【动态规划】求二维数组从左下到右上的最优路径
1.求二维数组从左下到右上的最优路径,使得路径和最大,并且只能向上或向下走。 解析:求最短路径,路径和最优等都可以用动态规划做。 dp[i][j]表示到i,j坐标的最优路径。 第一,确定初始条件。即向上向左的最优路径确定 dp[i,0] = dp[i-1,0] + arr[i][0] where j =0 dp[0,j] = dp[0,j-1] + arr[0][j] where i =
2015-09-30 20:41:58 5006
原创 动态规划概念
一、基本概念 动态规划过程是:每次决策依赖于当前状态,又随即引起状态的转移。一个决策序列就是在变化的状态中产生出来的,所以,这种多阶段最优化决策解决问题的过程就称为动态规划。 二、基本思想与策略 基本思想与分治法类似,也是将待求解的问题分解为若干个子问题(阶段),按顺序求解子阶段,前一子问题的解,为后一子问题的求解提供了有用的信息。在求解任一子问题时,列出各种可能的局部解,通过决策保留那
2015-09-30 20:29:23 536
原创 C++实现LRU(最久未使用)缓存算法
LRU缓存算法也叫LRU页面置换算法,是一种经典常用的页面置换算法,本文将用C++实现一个LRU算法。 LRU算法实现并不难,但是要高效地实现却是有难度的,要想高效实现其中的插入、删除、查找,第一想法就是红黑树,但是红黑树也是一种折中的办法。插入、删除效率最高当属链表,查找效率当属hash。所以,这里我们就将链表和hash结合起来,利用空间换时间的思想,实现LRU算法。 LRU具体概念就不列出了,本文的目的是进一步了解LRU算法和学习高效的编程方法。
2015-09-11 16:21:26 11910 5
原创 学习STL,实现一个单链表的迭代器
STL源码剖析中,空间配置器和迭代器属于比较晦涩难懂的两章,这里学习了STL迭代器后也尝试自己写一个迭代器,实现单链表的迭代器,实现不难,可以说是一个玩具而已,但是能够帮助我们理解STL迭代器的基本原理。 1.节点Node和单链表的定义LinkList //声明 template class ListIterator; template class LinkList; //链表节点 temp
2015-09-10 10:38:00 2022
原创 数据结构——二叉树的层次遍历
二叉树的层次遍历说简单也简单,说难也难。下面是我读编程之美和研究数据结构结合大神的博客来实现的二叉树的层次遍历,这里只给出三种简单高效的解法。
2015-09-08 20:22:29 1740
com.zend.verifier_11.0.2.v20140926-0202.jar
2014-11-12
俄罗斯方块
2014-07-26
C++编写的动态库,可不可以只有一个dll文件。
2015-05-22
TA创建的收藏夹 TA关注的收藏夹
TA关注的人