TODO: 动态规划到底是个什么玩艺?ref:http://www.cnblogs.com/waytofall/archive/2012/04/10/2439820.htmlI 只考虑怎样产生更大的子组和:假设处理到第i个节点时:1. 考虑是否i节点是否可使子组的和变大 a) 如果i节点大于0,则....
分类:
编程语言 时间:
2014-11-14 01:32:42
阅读次数:
200
hoj2558,给定一个矩阵,返回最大的子矩阵的和。
思路(动态规划):
1.读入矩阵的同时计算部分和矩阵
2.枚举矩阵的行上下边界,固定了行上下边界后,
根据部分和矩阵在O(1)时间内得到同一列元素的和,转化为1维数组的情况
3.按照一维数组的情况,求最大子数组和的思路是:
可以从后往前计算,每次先算以当前元素A[i]为开头的最大和start,
再将start与当前A[i+1:n]...
分类:
其他好文 时间:
2014-11-13 22:36:50
阅读次数:
305
做过的,就说下思路。用Sum记录A[0...N-1]中 以第i个元素结尾的子数组中的最大和,若以第i-1个元素结尾的子数组小于0,那么以第i个元素结尾的子数组中的最大和就是 A[i]本身 否则是A[i] + Sum(i-1的)总结起来就是 Sum = (Sum > 0) ? A[i] + Sum :...
分类:
编程语言 时间:
2014-11-10 15:16:32
阅读次数:
224
思路,有了一维的思路,我们想办法把二维问题转化为一维的问题。我们假定已经选中了行的范围是 a-c 那么把每一列中 a-c的元素加起来就变成了一个一维的问题。只需对行的范围遍历,再用一维的方法来解就可以了。注意,也可以对列的范围遍历,行和列那个小就对哪个遍历。 复杂度为O(M * N * min(M,...
分类:
编程语言 时间:
2014-11-10 15:10:29
阅读次数:
149
最长递增子序列问题:求一个一维数组中最长递增子序列的长度。解法1:非常明显用动态规划的算法,选取以下的阶段(这样的选法极为常见),可使阶段间的关系具有无后效性。阶段:在全部以元素k结尾的子数组中,选出当中的最长递增子序列,k=1,2...n。状态:以元素k结尾的最长递增子序列中仅仅有一个最长的递增子...
分类:
其他好文 时间:
2014-11-08 10:26:07
阅读次数:
154
题目:一个有N个数的整数数组 取其中N-1个元素的子数组 求子数组的最大乘积 不能用除法。这道题自己没有写对,没有考虑到负数的情况,只是单纯的想去掉最小的数。 但是若有负数 -5 -4 -3 中-5 * -4 = 20更大。需要先统计正数、负数和0的个数,再分类讨论。考察的其实就是细心和耐心。//答...
分类:
编程语言 时间:
2014-11-07 00:45:55
阅读次数:
278
一、钢条切割二、矩阵链乘法三、最优三角剖分四、连续子数组之和五、单词分割总结:写递归方程的时候,往往不直接是所要求的最优解,所需最优解可能还需要根据递归方程解出来的结果,再次计算。例如,连续子数组之和,它并不是直接求解子数组之和最大,并不是直接根据它来列出递归方程。
分类:
其他好文 时间:
2014-11-06 21:38:15
阅读次数:
122
求最大子数组的和,算法导论只分治递归求解,暴力求解,记忆扫描方法。...
分类:
编程语言 时间:
2014-11-04 09:25:49
阅读次数:
186
求子数组的最大和
输入一个整形数组,有整数也有负数,数组中连续一个或多个子数组,每个子数组都有一个和,求所有子数组的和的最大值,要求时间复杂度O(n)...
分类:
编程语言 时间:
2014-11-03 14:39:21
阅读次数:
169
/*------------------ 求解最大子数组问题 --------------- 最大子数组,就是求解一个数组的所有元素的各种组合中,和最大的那个子数组。在这种情况下,如果元素值全部非负,那么最大子数组当然是所有元素。但是如果有负值的元素存在,那么久需要找到一个由数组中连续几个...
分类:
编程语言 时间:
2014-11-02 20:48:31
阅读次数:
324