题目: 解题思路:1、简单思路:暴力破解法,时间复杂度O(n^3),肯定通不过。 2、动态规划法:(一般含“最XX”等优化词义的题意味着都可以动态规划求解),时间复杂度O(n^2),空间复杂度O(n^2)。 形如"abba", "abbba"这样的字符串,如果用dp[i][j]表示从下标i到j之间的 ...
分类:
其他好文 时间:
2016-04-06 11:03:39
阅读次数:
202
一、基本概念动态规划过程是:每次决策依赖于当前状态,又随即引起状态的转移。一个决策序列就是在变化的状态中产生出来的,所以,这样的多阶段最优化决策解决这个问题的过程就称为动态规划。二、基本思想与策略基本思想与分治法类似,也是将待求解的问题分解为若干个子问题(阶段)。按顺序求解子阶段,前一子问题的解,为...
分类:
编程语言 时间:
2015-12-28 18:11:40
阅读次数:
156
给出一个数组,求其最大子数组和(要求最少取一个元素)
主要是用动态规划法,用dp(n)表示从0到n之间的最大子数组和。其状态转移方程为dp(n)=dp(n-1)
代码如下:
class Solution {
public:
int maxSubArray(vector& nums)
{
int res = numeric_limits::min();
int sum = 0;
...
分类:
其他好文 时间:
2015-09-04 12:38:44
阅读次数:
206
1.有向图中,每对结点之间的最短路径动态规划法:向前处理法:由前向后递推的方式求解列出的关系式本题关键在于:A[i][j]= A[i][j] < (A[i][k]+A[k][j]) ? A[i][j] : A[i][k]+A[k][j];即A(i,j)=min{A(i,j), A(i,K)+A(k,...
分类:
其他好文 时间:
2015-08-15 21:14:14
阅读次数:
95
1 // 动态规划法解决0-1背包问题 2 //example: 3 //物品种类n=5,背包容量c=10, 4 //物品的重量向量 w={2,2,6,5,4},物品的价值向量 v={6,3,5,4,6} 5 // O(min{n*c,2^n}) 6 #include "stdafx.h" 7 .....
分类:
其他好文 时间:
2015-08-02 19:59:37
阅读次数:
118
核心数学式:f(n) = F(f(n-1));这里的F有可能比较复杂,比如或许会包括or等运算;可能会导致f(n)会被计算几次,为了保证只被计算一次,需要存储;存储过程就是一个填表的过程,有的可能是填一维表,有的可能是填二维表例子: 斐波那契数列:填关于n的一维表 背包问题:填关于i、j(前i...
分类:
其他好文 时间:
2015-07-28 12:15:25
阅读次数:
115
题目:输入一个整型数组,数组里有正数也由负数。数组中一个或者连续的多个整数组成一个子数组。求所有子数组的和的最大值。要求时间复杂度为 O(n)。例如输入的数组为{1,-2,3,10,-4,7,2,-5},其最大的子数组为{3,10,-4,7,2},因此所有子数组的和的最大值为 18。应用动态规划法:...
分类:
编程语言 时间:
2015-07-07 22:44:50
阅读次数:
190
最长回文子串
题意:给定一个字符串s,找出该字符串中最长的回文子串。
字符串如“abcba”,”abbbba”这样呈中心对称的子串称为回文串。该题目是一个老题了,有多种不同的解法,我整理一下方便以后查询。
暴力动态规划法
这个方法是我们看到这个题目后最容易想到的方法,暴力搜索所有的子串,判断每个子串是否是回文串;我们用一个二维空间记录已计算过的子串是否为回文串,这样之后针对每个新子串进...
分类:
其他好文 时间:
2015-06-30 20:27:11
阅读次数:
120
动态规划算法和分治法基本思想类似,但又有不同之处。它适用于求解最优化问题。 一. 基本思想 动态规划算法与分治法类似,其基本思想也是将待求解问题分解成若干个子问题,先求解子问题,然后从这些子问题的解得到原问题的解。与分治法不同的是,适合于用动态规划法求解的问题,经分解得到的子问题往往不是互相独立的。...
分类:
其他好文 时间:
2015-05-23 16:43:28
阅读次数:
139