摘要:1. 写在前面 在前三篇博客中,分别介绍了 "钢条切割问题" , "矩阵链乘法问题" ,以及对动态规划问题做了一个 "小结" 。在这篇博客中,将继续介绍一个动态规划问题: 最长公共子序列问题 。 2. 提出问题 我们有时候会遇到比较两个字符串“相似度”的问题,例如:比较给定字符串X和Y的相似度,其中 阅读全文
posted @ 2016-06-08 22:32 学数学的程序猿 阅读(619) 评论(0) 推荐(0) 编辑
摘要:1. 写在前面 我们已经用动态规划的方法解决了两个问题,但可能还是弄不清应该在何时使用动态规划。本篇,我们对动态规划方法做一个总结,重点关注适合应用动态规划方法求解的最优化问题应该具备的两个要素: 最优子结构 和 子问题重叠 。 2. 最优子结构 用动态规划方法求解最优化问题的第一步就是刻画最优解的 阅读全文
posted @ 2016-06-05 14:27 学数学的程序猿 阅读(896) 评论(0) 推荐(0) 编辑
摘要:写在前面 在上一篇博客中,学习了钢条切割问题。这一篇博客再来学习另一个典型的动态规划问题:矩阵乘法链问题。 提出问题 我们知道,矩阵的乘法是满足结合律的,即对于矩阵A,B,C 满足(A B) C = A (B C) 。不同的结合方式会导致最终所作的乘法总次数不同。 例如:对于矩阵 A(规模为10 x 阅读全文
posted @ 2016-04-28 15:37 学数学的程序猿 阅读(1129) 评论(0) 推荐(0) 编辑
摘要:写在前面 今天在做一个Android app时遇到了一个问题:Android端采用ASE对称加密的数据在JavaWeb(jre1.8.0_7)后台解密时,居然解密失败了!经过测试后发现,对相同的数据,采用相同的密钥加密时,得到的密文是不同的,而加密的代码是完全一样的,只是在加密最后,对加密结果进行B 阅读全文
posted @ 2016-04-02 22:37 学数学的程序猿 阅读(509) 评论(0) 推荐(0) 编辑
摘要:我们先从两个问题入手,来学习动态规划。 1. 钢条切割问题 1.1 提出问题 某公司想要把一段长度为n的钢条切割成若干段后卖出,目前市场上长度为i(0<i<10,i为整数)的钢条的价格行情如下: 长度i 1 2 3 4 5 6 7 8 9 10 其他 价格pi 1 5 8 9 10 17 17 20 阅读全文
posted @ 2016-03-26 12:49 学数学的程序猿 阅读(869) 评论(0) 推荐(1) 编辑
摘要:1. 安装 1. 安装 (1) 下载最新gradle压缩包,解压到某处。地址是:Gradle web site; (2) 添加环境变量: 1) 变量名:GRADLE_HOME变量值:刚才解压的地址,如:E:\gradle-2.8。 2) 为Path变量添加一个值:GRADLE_HOME/bin 3) 阅读全文
posted @ 2015-11-17 15:37 学数学的程序猿 阅读(313) 评论(0) 推荐(0) 编辑
摘要:1. 引言 1. 引言 在红黑树——算法导论(15)中学习了红黑树的原理。本来打算自己来试着实现一下,然而在看了JDK(1.8.0)TreeMap的源码后恍然发现原来它就是利用红黑树实现的(很惭愧学了Java这么久,也写过一些小项目,也使用过TreeMap无数次,但到现在才明白它的实现原理)。因此本 阅读全文
posted @ 2015-11-12 22:53 学数学的程序猿 阅读(537) 评论(0) 推荐(0) 编辑
摘要:1. 定义 1. 定义 抽象工厂模式(Abstract Factory Pattern):提供一个创建一系列相关或互相依赖对象的接口,而无需指定它们具体的类。抽象工厂模式又称为Kit 模式,它是一种对象创建型模式。 2. 问题 2. 问题 现有这么一个需求:我们现在要为某软件定制2套皮肤,一套是Sp 阅读全文
posted @ 2015-11-09 20:03 学数学的程序猿 阅读(283) 评论(0) 推荐(0) 编辑
摘要:1. 简单工厂模式 1. 简单工厂模式 在介绍工厂方法模式之前,先介绍一下简单工厂模式。虽然简单工厂模式不属于GoF 23种设计模式,但通常将它作为学习其他工厂模式的入门,并且在实际开发中使用的也较为频繁。 (1) 定义 简单工厂模式(Simple Factory Pattern):定义一个工厂类, 阅读全文
posted @ 2015-11-05 15:16 学数学的程序猿 阅读(545) 评论(0) 推荐(0) 编辑
摘要:1. 什么是红黑树 (1) 简介 上一篇我们介绍了基本动态集合操作时间复杂度均为O(h)的二叉搜索树。但遗憾的是,只有当二叉搜索树高度较低时,这些集合操作才会较快;即当树的高度较高(甚至一种极端情况是树变成了1条链)时,这些集合操作并不比在链表上执行的快。 于是我们需要构建出一种“平衡”的二叉搜索树。 红黑树(red-black tree)正是其中的一种。它... 阅读全文
posted @ 2015-10-29 22:47 学数学的程序猿 阅读(7836) 评论(1) 推荐(1) 编辑