Arrays 动态规划最大序列

Arrays 动态规划最大序列,arrays,dynamic,sequence,Arrays,Dynamic,Sequence,我在股票交易公司工作。我有两个代表货币的数组 我希望能够找到两个数组中的最大序列 但是,当我在两个阵列之间切换时,我会产生20.00英镑的固定成本 例如: 数组1:12,21,45,10,42 数组2:52,3,4,10,35 如何使用动态规划来解决这个问题 也就是说,找到序列的最大权重。DP解决方案的第一个明显尝试是定义一个数组p[I],它是最大值 事务1到i可达到的权重。问题是为了更新这个数组,我们需要 要知道我们在上一次指数中的位置,因为我们需要知道是否需要收取20.00英镑的换乘费用 我

我在股票交易公司工作。我有两个代表货币的数组

我希望能够找到两个数组中的最大序列

但是,当我在两个阵列之间切换时,我会产生20.00英镑的固定成本

例如:

数组1:12,21,45,10,42 数组2:52,3,4,10,35

如何使用动态规划来解决这个问题


也就是说,找到序列的最大权重。

DP解决方案的第一个明显尝试是定义一个数组p[I],它是最大值 事务1到i可达到的权重。问题是为了更新这个数组,我们需要 要知道我们在上一次指数中的位置,因为我们需要知道是否需要收取20.00英镑的换乘费用

我们将通过向控件添加额外的参数来编码这些额外的条件信息 对于位置(Array1或Array2),我们处于上次交易中

p[i,A1]=最大(顺序)事务1到i,假设事务i在A1中

p[i,A2]=最大(顺序)事务1到i,假设事务i在A2中

对于基本情况,假设我们从A1开始,我们 没有固定成本,所以我们有P[0,A1]=0

另一方面,如果我们想从 A2,我们需要付钱才能到达那里,因此,P[0,A2]=−二十,

注意如果我们从A2开始而不是从A1开始,我们可以改变基本情况,但我认为我们必须从A1开始。如果可以从其中一个开始,则可以通过以下过程计算这两种方法,并找到其中的最大值

一般来说,对于i>0,为了计算p[i,a1],我们考虑两种可能性,这取决于我们上次交易的位置。 如果我们在A1,我们不需要承担成本,我们在交易i之前累积的任何价值的基础上获得a[i]的价值− 1.因此,我们

P [i, A1] = A1[i] + P [i − 1, A1].
另一方面,如果我们在A2最后一笔交易中,我们需要支付20的招致成本,但我们仍然获得A1交易和第一笔交易的应计利润− 1.交易。在这种情况下,我们

P[i, A1] = A1[i] + P [i − 1, A2] − 20.
我们有以下两个递归规则:

P [i, A1] = A1[i] + max(P [i − 1, A1], P [i − 1, A2] − 20).
P [i, A2] = A2[i] + max(P [i − 1, A2], P [i − 1, A1] − 20).
一旦我们成功地计算出0的值p[i,A1]和p[i,A2]≤ 我≤ n、 我们返回P[n,A1]和P[n,A2]的最大值作为最终结果