Arrays 使用动态规划的两个阵列之间的最小距离

Arrays 使用动态规划的两个阵列之间的最小距离,arrays,dynamic-programming,Arrays,Dynamic Programming,我有两个数组,A和B,不一定大小相同。两个元件a(a的元件)和b(b的元件)之间的距离为abs(a-b) 我在测试用例中得到了错误的答案。我可以做哪些更改? 以下是我的解决方案: 为简单起见,假设:数组的索引基于1,大小(A)>大小(B) dp[i][j]=取A[1..i]和B[1..j]的最小距离 memset(dp,无穷大) 对于(j=1;jdid),您运行这个程序并没有得到正确的答案吗?@最糟糕的是,我刚找到问题语句,没有测试数据。我在A={0,1,4}和B={3,4}上测试了它,得到的答

我有两个数组,A和B,
不一定大小相同。两个元件a(a的元件)和b(b的元件)之间的距离为abs(a-b)

我在测试用例中得到了错误的答案。我可以做哪些更改?

以下是我的解决方案:

为简单起见,假设:数组的索引基于1,大小(A)>大小(B)

dp[i][j]=取A[1..i]和B[1..j]的最小距离
memset(dp,无穷大)

对于(j=1;jdid),您运行这个程序并没有得到正确的答案吗?@最糟糕的是,我刚找到问题语句,没有测试数据。我在A={0,1,4}和B={3,4}上测试了它,得到的答案是1,但应该是2。
dp[i][j] = minimum distance taking A[1..i] and B[1..j] 

memset(dp,INFINITY)

for(j=1;j<=size(B);j++) // A is empty
   dp[0][j] = B[j]  

for(j=1;j<=size(A);j++)  // B is empty
   dp[j][0] = A[j]  

dp[0][0] = 0

for(i=1;i<=size(A);i++)     
    for(j=1;j<=size(B);j++)
        dp[i][j] = min( dp[i][j-1] ,     // we don't take A[i]
                        dp[i-1][j-1] + abs(A[i]-B[j])   // we take this pair and take difference
                    )
return dp[size(A)][size(B)]