在SPOJ上寻找针对MARTIAN的DP解决方案的失败测试用例

时间:2014-02-13 20:11:32

标签: algorithm dynamic-programming

我正在尝试解决the MARTIAN problem on SPOJ

我的算法如下:

  1. 定义dp[i][j]=max可以以矩形形式0,0 to i,j开采的矿物量。

  2. 使用重复

    dp[i][j] = max(dp[i-1][j] + total amount of yeyenum
                                in the i-th row up to the j-th column,
                   dp[i][j-1] + total amount of bloggium
                                in the j-th column up to the cell i-th row)
    
  3. 然而,这种方法会产生WA(错误的答案)。有人可以请我提供一个测试用例,这样的方法不起作用吗?

    我不是在寻找正确的算法,只是这种方法失败的测试用例。我自己一直无法找到这个bug。

1 个答案:

答案 0 :(得分:3)

在您的代码上尝试此操作(根据给出的示例进行修改):

4 4
0 0 10 60
1 3 10 0
4 2 1 3 
1 1 20 0
10 0 0 0
1 1 1 10
0 0 5 3
5 10 10 10
0 0

如果你从[4] [4]开始,你会选择Bloggium,因为你可以通过上升获得23个博客,而只剩下22个Yeyenum。但是,你会错过大量的Yeyenum。

使用你的算法,你会得到23 + 22 + 7 + 14 + 10 = 76.

如果您选择大型Yeyenum,您将得到70 + 14 + 10 + 22 = 116(所有Yeyenum,因为博客被封锁)。