动态规划的基本思想:将一个问题分解为子问题递归求解,且将中间结果保存以避免反复计算。通经常使用来求最优解,且最优解的局部也是最优的。求解过程产生多个决策序列,下一步总是依赖上一步的结果,自底向上的求解。动态规划算法可分解成从先到后的4个步骤:1. 描写叙述一个最优解的结构,寻找子问题,对问题进行划分...
分类:
其他好文 时间:
2014-09-04 14:33:19
阅读次数:
91
The Triangle
Time Limit: 1000MS
Memory Limit: 10000K
Total Submissions: 37778
Accepted: 22685
Description
7
3 8
8 1 0
2 7 4 4
4 5 2 6 5
(Figure...
分类:
其他好文 时间:
2014-09-03 21:19:27
阅读次数:
210
如果d[i]是必胜态,那么d[i + V[j]]一定是必败态,反之亦然。
用d[i]代表棋子为i个是否为必胜态。
边界条件是d[i] = 1;
14139291
10404
Bachet's Game
Accepted
C++
0.662
2014-09-03 09:44:48
#include
#include
...
分类:
其他好文 时间:
2014-09-03 18:10:17
阅读次数:
207
本文讨论了最长公共子串的的相关算法的时间复杂度,然后在后缀数组的基础上提出了一个时间复杂度为o(n^2*logn),空间复杂度为o(n)的算法。该算法虽然不及动态规划和后缀树算法的复杂度低,但其重要的优势在于可以编码简单,代码易于理解,适合快速实现。
分类:
其他好文 时间:
2014-09-03 16:26:16
阅读次数:
309
题目链接:HDU 1160 FatMouse's Speed
题意:求体重越重,反而速度越慢的例子,并输出对应的编号。
对speed进行从大到小排序,再求weight的最长上升序列,并输出路径。
AC代码:
#include
#include
#include
using namespace std;
struct Node
{
int weight;
int spee...
分类:
其他好文 时间:
2014-09-03 15:00:16
阅读次数:
214
晚上做了一下leetcode的Interleaving String,觉得特别适合比较树的遍历和动态规划的效率比较。题目如下:Givens1,s2,s3, find whethers3is formed by the interleaving ofs1ands2.For example,Given:...
分类:
其他好文 时间:
2014-09-03 01:27:45
阅读次数:
316
使用动态规划求最大子数字和:s[i]表示data[i~n-1]以元素i开始的最大子数组和,a[i]表示data[i~n-1]中的最大子数组和 ;s[i]=max(s[i+1]+data[i], data[i]);a[i]=max(a[i+1], s[i]); 由于数组s,a递推的时候,都只用到数组的...
分类:
其他好文 时间:
2014-09-03 00:05:55
阅读次数:
261
这个问题很经典,典型的动态规划,动态规划就是填一个表,然后遍历一下就行了。
代码实现
/**
* 源码名称:LCSequence.java
* 日期:2014-09-02
* 程序功能:LCS(不连续)
* 版权:CopyRight@A2BGeek
* 作者:A2BGeek
*/
public class LCSequence {
private String mOn...
分类:
其他好文 时间:
2014-09-02 17:48:55
阅读次数:
191
问题描述:
给定一个整数序列, 序列中可能有负数。 目的是找出这个序列的连续子序列(即子序列的元素的选取是连续的从序列中选取的)。即通过确定i,
j 的值, 使得的值达到最大。 我们定义, 当所有的元素为负数值的时候, 那么maximum subsequence sum
为0。
下面我们用动态规划的技术去求解。
为了找到最大连续子序列和, 不难看出, 在扩展我们的求和窗口...
分类:
其他好文 时间:
2014-09-02 16:00:14
阅读次数:
187