我有两个数组,如下:
a1 = [x,y]
b1 = [a,b,c]
我试图找到最好的匹配"他们一个数组中的每个项都可以匹配第二个数组中的项,并且项可以是不匹配的。数组已排序,项目无法按顺序匹配。那就是:
some valid orderings = [xa, yb, c], [a, x, yb, c], [a, x, b, c, y]
some invalid orderings = [ya, xb, c], [b, x, a, c, y]
"最佳匹配"由成本函数定义,每个单独的c(a,b)或每个单独的c(a)。
我该怎么做呢?
答案 0 :(得分:2)
假设数组的大小为n和m。存储2D数组dp [n] [m],其中dp [i] [j]是第一个数组的前i个元素和第二个数组的j个元素的相同问题的解。使用以下等式使动态编程工作:
在步骤2,如果i = 0,则仅使用dp [i] [j - 1] + c(b [j]),如果j = 0,则使用dp [i - 1] [j] + c(a [我])。