Dist(B)+ Dist(A-B)

时间:2011-06-09 08:35:31

标签: algorithm

A是一系列不同的元素,B是A的子序列,A-B是A中的所有元素但不是B中的元素 Dist(A)= Sum | a(i)-a(i + 1)|从i = 1到n-1 找到子序列B,使得Dist(B)+ Dist(A-B)最小 我知道这可以通过动态编程解决,但无法弄清楚如何... 有答案的人???

1 个答案:

答案 0 :(得分:0)

让我们一次添加一个元素,让我们标记B和AB,使得添加的最后一个元素在B中。如果我们在A中的N个元素,我们需要跟踪N个集合B_i,使得B_i是最少的成本解决方案,其中AB中的最后一个元素是a_i(集合B_0是集合A,因此AB为空)。当我们添加a_n时,我们通过添加| a_n + a_ {n-1} |来更新每个B_i的成本。并且让B_ {n-1}为集合(A-B_k)+ {a_n},其中k是具有最小值| a_n-a_k |。