进行算法设计的时候,时常有这样的体会:如果已经知道一道题目可以用动态规划求解,那么很容易找到相应的动态规划算法并实现;动态规划算法的难度不在于实现,而在于分析和设计—— 首先你得知道这道题目需要用动态规划来求解。本文,我们主要在分析动态规划在算法分析设计和实现中的应用,讲解动态规划的原理、设计和实现。在很多情况下,可能我们能直观地想到动态规划的算法;但是有些情况下动态规划算法却比较隐蔽,难以发现。...
分类:
其他好文 时间:
2014-07-19 23:35:08
阅读次数:
288
清华大学出版社推出的《HTML5网页开发实例详解》是一本最全的HTML5技术书,是一本最全的HTML5案例书,由大众点评网资深前端工程师周遥和聚划算资深前端工程师李春城联袂奉献。所有的实例和框架在这里给读者做一个预览。1、当前天气的APP2、新闻阅读列表APP3、一个网站的用户增..
分类:
Web程序 时间:
2014-07-17 10:29:21
阅读次数:
263
最长公共子序列问题LCS问题描述参考解答动态规划算法可有效地解此问题。下面我们按照动态规划算法设计的各个步骤来设计一个解此问题的有效算法。1.最长公共子序列的结构解最长公共子序列问题时最容易想到的算法是穷举搜索法,即对X的每一个子序列,检查它是否也是Y的子序列,从而确定它是否为X和Y的公共子序列,并...
分类:
其他好文 时间:
2014-07-16 18:01:53
阅读次数:
280
写在前面:
结合我的工作经验,我对未来工作做出了一些规划。算是想法的总结,我希望能达到有效的沟通。请指正我哪里有不合适的。告诉我哪里能做,哪里不能做,哪里不足。
现在,我已经养成一个engineer思维,所以我可以教授如何像一个engineer一样思考。
思维方式:
Engineer和scientist的思维方式,完全不同。
Scientist:why...
分类:
其他好文 时间:
2014-07-11 00:33:37
阅读次数:
293
最长单调递增子序列问题
题目:设计一个 O( n ^ 2 )复杂度的算法,找出由 n 个数组成的序列的最长单调递增子序列。
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.i...
分类:
其他好文 时间:
2014-07-06 11:30:45
阅读次数:
176
数塔问题
题目:给定一个数塔,其存储形式为如下所示的下三角矩阵。在此数塔中,从顶部出发,在每一节点可以选择向下走还是向右走,一直走到底层。请找出一条路径,使路径上的数值和最大。
输入样例(数塔):
9
12 15
10 6 8
2 18 9 5
19 7 10 4 16
输出样例(最大路径和):
59...
分类:
其他好文 时间:
2014-07-06 08:38:12
阅读次数:
166
司令部的将军们打算在N*M的网格地图上部署他们的炮兵部队,一个N*M的地图由N行M列组成,地图的每一格可能是山地(用"H"
表示),也可能是平原(用"P"表示),如下图。在每一格平原地形上最多可以布置一支炮兵部队(山地上不能够部署炮兵部队);一支炮兵部队在地图上的攻击范围如图中黑色区域所示:
如果在地图中的灰色所标识的平原上部署一支炮兵部队,则图中的黑色的网格表示它能够攻击到的区...
分类:
其他好文 时间:
2014-06-29 23:54:13
阅读次数:
303
用1*2 的骨牌通过组合拼成 m * n 的大矩形,问有几种拼法。
题目链接:http://poj.org/problem?id=2411
状态转移:
由于上一行的该列竖直放置骨牌为 0,影响到当前行的该列,当前行的该列为 1
当前行骨牌横放,上一行骨牌横放, 都为11
上一行该列置为 1,当前行当前列立着放为
0
#include
#include
using...
分类:
其他好文 时间:
2014-06-27 07:50:19
阅读次数:
196
1Iterable接口实现这个接口的对象被允许成为 "foreach" 语句的目标2 动态规划动态规划的基本思想是将待求解的问题分解为若干个子问题,按顺序求解子问题。前一子问题的解,为后一子问题的求解提供了有用的信息。动态规划算法和分治法的基本思想比较类似,区别在于动态规划解决的问题可以分解为重叠子...
分类:
其他好文 时间:
2014-06-26 12:18:28
阅读次数:
226
提示:这是属于动态规划问题。动态规划算法通常用于求解具有某种最优性质的问题。在这类问题中,可能会有许多可行解。每一个解都对应于一个值,我们希望找到具有最优值的解。
其实这道题目有一些问题:不能交换位置,这个关键的信息在题目中间没有进行说明。
编程思路是:需要三个数组,第一个数组存放原数据。第二个数组用于存放人数:从左向右遍历时,对于当前的数据(身高),寻找符合条件的人数,要求是从小到大排列的最...
分类:
其他好文 时间:
2014-06-26 08:19:13
阅读次数:
305