358得票12回答
什么是记忆化和动态规划的区别?

记忆化和动态规划有什么区别?我认为动态规划是记忆化的一个子集。这是否正确?

18得票7回答
每个k=1..n的子数组大小最大和

对于一个大小为n的数组,对于每个k从1到n,找出大小为k的连续子数组的最大和。 这个问题有一个明显的解决方案,时间复杂度为O(N2),空间复杂度为O(1)。Lua代码:array = {7, 1, 3, 1, 4, 5, 1, 3, 6} n = #array function maxAr...

21得票3回答
动态规划中的最优子结构

我一直在尝试理解动态规划,我的理解是DP有两个部分。 最优子结构 重叠子问题 我理解第二个部分,但是我不理解第一个部分。

8得票3回答
将一组物品公平地分成三组的算法是什么?

我在我的教材中遇到了这个问题: 给定一个n个项目的组,每个项目都有一个不同的价值V(i),最佳方法是将项目分成3个组,使具有最高价值的组最小化?给出此最大组的值。 我知道如何解决这个问题的两堆变体:只需要在问题上向后运行背包算法。但是,我对如何解决这个问题感到非常困惑。能否有人给我任何指针?...

11得票3回答
最大化数组间的最小距离

假设你有n个已排序的数字数组,需要从每个数组中选择一个数字,使得所选元素之间的最小距离最大。 例子:arrays: [0, 500] [100, 350] [200] 2<=n<=10,每个数组可能有 ~10^3-10^4 个元素。 在这个例子中,最大化最小距离的最优解是选择数字:...

7得票3回答
动态规划存在的问题

我遇到了理解动态规划的困难,所以我决定解决一些问题。我知道基本的动态算法,如最长公共子序列、背包问题,但我知道它们是因为我读过它们,但我自己想不出什么 :-( 例如,我们有一个自然数的子序列。我们可以对每个数字进行加减运算,最后取这个和的绝对值。对于每个子序列,找到最小可能的结果。 in1...

8得票2回答
Mathematica中的动态规划:如何自动化地本地化和/或清除记忆化函数的定义

在Mathematica 8.0中,假设我有一些常数: a:=7 b:=9 c:=13 d:=.002 e:=2 f:=1 我希望使用它们来评估一些相互关联的函数 g[0,k_]:=0 g[t_,0]:=e g[t_,k_]:=g[t-1,k]*a+h[t-1,k-1]*b h...

14得票11回答
寻找子数组的最小绝对和

给定一个包含正数和负数的整数数组 A,找到一个元素绝对值之和最小的(连续)子数组,例如: A = [2, -4, 6, -3, 9] |(−4) + 6 + (−3)| = 1 <- minimal absolute sum 我先实现了一个蛮力算法,时间复杂度为O(N^2)或O(N...

7得票1回答
最长的K个连续递增子序列

为什么我创建了一个重复的线程 我在阅读允许K个异常的最长递增子序列后创建了这个线程。我意识到提问者并没有真正理解问题,因为他参考了一个链接来解决 "只允许一个改变的最长递增子数组" 问题。所以他得到的回答实际上与LIS问题无关。 问题描述 给定长度为N的数组A。找出最长递增子序列,其中允...

24得票2回答
内存受限的硬币找零问题,适用于小于十亿的数字

我在一次培训中遇到了这个问题。我们有N个不同的值(N<= 100)。我们把这个数组称为A[N],对于这个数组A,我们确定其中有一个1,而且A[i] ≤ 109。其次,我们给出了数字S,其中S ≤ 109。 现在我们需要使用这些值来解决经典的硬币问题。实际上,我们需要找到最少...