摘要: 1. 提出问题 假设我们要设计一个将英语翻译成法语的程序,即对英文文本中出现的每个单词,我们需要查找其对应的法语单词。为了实现这一查找操作,我们可以构建一棵二叉搜索树,将n个英文单词作为关键字,对应的法语单词作为关联数据。 通过使用红黑树或其他平衡搜索树结构,我们可以做到平均搜索时间为O(lgn)。 阅读全文
posted @ 2016-06-12 15:04 学数学的程序猿 阅读(1147) 评论(0) 推荐(2) 编辑
摘要: 1. 写在前面 在前三篇博客中,分别介绍了 "钢条切割问题" , "矩阵链乘法问题" ,以及对动态规划问题做了一个 "小结" 。在这篇博客中,将继续介绍一个动态规划问题: 最长公共子序列问题 。 2. 提出问题 我们有时候会遇到比较两个字符串“相似度”的问题,例如:比较给定字符串X和Y的相似度,其中 阅读全文
posted @ 2016-06-08 22:32 学数学的程序猿 阅读(713) 评论(0) 推荐(0) 编辑
摘要: 1. 写在前面 我们已经用动态规划的方法解决了两个问题,但可能还是弄不清应该在何时使用动态规划。本篇,我们对动态规划方法做一个总结,重点关注适合应用动态规划方法求解的最优化问题应该具备的两个要素: 最优子结构 和 子问题重叠 。 2. 最优子结构 用动态规划方法求解最优化问题的第一步就是刻画最优解的 阅读全文
posted @ 2016-06-05 14:27 学数学的程序猿 阅读(1115) 评论(0) 推荐(0) 编辑
摘要: 写在前面 在上一篇博客中,学习了钢条切割问题。这一篇博客再来学习另一个典型的动态规划问题:矩阵乘法链问题。 提出问题 我们知道,矩阵的乘法是满足结合律的,即对于矩阵A,B,C 满足(A B) C = A (B C) 。不同的结合方式会导致最终所作的乘法总次数不同。 例如:对于矩阵 A(规模为10 x 阅读全文
posted @ 2016-04-28 15:37 学数学的程序猿 阅读(1368) 评论(0) 推荐(0) 编辑
摘要: 什么是Base64编码 首先,我们知道,编码的目的一般是为了数据压缩和数据传输的需要。Base64编码的产生就是因为后者:有些网络传送渠道并不支持所有的字节的传输。Base64编码就是一种将二进制数据映射成一些可打印字符(或逆过来)的映射规则,具体的说是映射到[A-Za-z0-9+/]上。比如将字符 阅读全文
posted @ 2016-04-02 22:37 学数学的程序猿 阅读(637) 评论(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 学数学的程序猿 阅读(1056) 评论(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 学数学的程序猿 阅读(381) 评论(0) 推荐(0) 编辑
摘要: 1. 引言 1. 引言 在红黑树——算法导论(15)中学习了红黑树的原理。本来打算自己来试着实现一下,然而在看了JDK(1.8.0)TreeMap的源码后恍然发现原来它就是利用红黑树实现的(很惭愧学了Java这么久,也写过一些小项目,也使用过TreeMap无数次,但到现在才明白它的实现原理)。因此本 阅读全文
posted @ 2015-11-12 22:53 学数学的程序猿 阅读(639) 评论(0) 推荐(0) 编辑
摘要: 1. 定义 1. 定义 抽象工厂模式(Abstract Factory Pattern):提供一个创建一系列相关或互相依赖对象的接口,而无需指定它们具体的类。抽象工厂模式又称为Kit 模式,它是一种对象创建型模式。 2. 问题 2. 问题 现有这么一个需求:我们现在要为某软件定制2套皮肤,一套是Sp 阅读全文
posted @ 2015-11-09 20:03 学数学的程序猿 阅读(352) 评论(0) 推荐(0) 编辑
摘要: 1. 简单工厂模式 1. 简单工厂模式 在介绍工厂方法模式之前,先介绍一下简单工厂模式。虽然简单工厂模式不属于GoF 23种设计模式,但通常将它作为学习其他工厂模式的入门,并且在实际开发中使用的也较为频繁。 (1) 定义 简单工厂模式(Simple Factory Pattern):定义一个工厂类, 阅读全文
posted @ 2015-11-05 15:16 学数学的程序猿 阅读(617) 评论(0) 推荐(0) 编辑