Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 使用动态规划合并两个数组,以使同一元素的重复次数最小化_Algorithm_Sequence_Dynamic Programming - Fatal编程技术网

Algorithm 使用动态规划合并两个数组,以使同一元素的重复次数最小化

Algorithm 使用动态规划合并两个数组,以使同一元素的重复次数最小化,algorithm,sequence,dynamic-programming,Algorithm,Sequence,Dynamic Programming,假设我们有两个数组m和n,其中包含集合a、b、c、d、e中的字符。假设集合中的每个字符都有一个与其相关的代价,考虑代价是 a=1,b=3,c=4,d=5,e=7</c>> < /p> 比如说 m = ['a', 'b', 'c', 'd', 'd', 'e', 'a'] n = ['b', 'b', 'b', 'a', 'c', 'e', 'd'] 假设我们想要合并m和n以形成一个更大的数组s s数组的示例可以是 s = ['a', 'b', 'c', 'd', 'd', 'e', 'a',

假设我们有两个数组
m
n
,其中包含集合
a、b、c、d、e
中的字符。假设集合中的每个字符都有一个与其相关的代价,考虑代价是<代码> a=1,b=3,c=4,d=5,e=7</c>> < /p> 比如说

m = ['a', 'b', 'c', 'd', 'd', 'e', 'a']
n = ['b', 'b', 'b', 'a', 'c', 'e', 'd']
假设我们想要合并
m
n
以形成一个更大的数组
s

s
数组的示例可以是

s = ['a', 'b', 'c', 'd', 'd', 'e', 'a', 'b', 'b', 'b', 'a', 'c', 'e', 'd']

如果有两个或两个以上的相同字符相邻,则将应用等于以下内容的惩罚:
相同类型的相邻字符数*该字符的成本
。考虑第二个例子,上面的代码< S>代码>包含子数组<代码> [D','D','D'] < /C>。在这种情况下,将应用
3*5
的罚款,因为与
d
相关的成本是
5
,而
d
的重复次数是
3

设计一个动态规划算法,使
s
的相关成本最小化


是否有人可以分享任何资源、论文或算法来帮助我找到正确的方向?

您的第二个示例是如何合并的?两个数组的顺序不保留。看起来更像是您正在尝试查找(其中一个)使用两个数组中的字符的最佳字符序列。如果你有两堆卡片,上面有字母,你可以从另一堆卡片的顶部取出一张卡片,然后将其放在新的卡片堆上,直到没有更多的卡片可以放在新的卡片堆上。还是不?(好的,与最初的堆相比,新的堆的顺序是相反的,但我想你知道我的意思。)关联你的第二个例子是如何合并的?两个数组的顺序不保留。看起来更像是您正在尝试查找(其中一个)使用两个数组中的字符的最佳字符序列。如果你有两堆卡片,上面有字母,你可以从另一堆卡片的顶部取出一张卡片,然后将其放在新的卡片堆上,直到没有更多的卡片可以放在新的卡片堆上。还是不?(好的,与最初的桩相比,新桩的顺序相反,但我想你知道我的意思)
s = ['b', 'a', 'd', 'd', 'd', 'b', 'e', 'c', 'b', 'a', 'b', 'a', 'c', 'e']