无法证明动态编程要求

时间:2015-01-03 09:49:44

标签: algorithm dynamic-programming greedy

我无法证明link中问题的最佳子结构和重叠子问题属性。 我的确切问题是,即使在理解了dp的标准问题之后,我也面临着解决新问题的难题。有时我无法找到解决方案的子问题,有时我无法证明我对问题的处理方法的正确性。 :

1 个答案:

答案 0 :(得分:0)

考虑到你获得砖号n后的总数不会影响你的策略;换句话说,那里的最佳路径与你到达那里的方式无关(最终得分取决于它,因为取决于你当前的得分,但最佳路径不是:你只需要从现在开始尽可能多地抓住反正)。

同样考虑到你的对手也会采取尽可能多的方式,公式只会变成:

best of
    worst of
        me taking 1 and opponent taking 1
        me taking 1 and opponent taking 2
        me taking 1 and opponent taking 3
    worst of
        me taking 2 and opponent taking 1
        me taking 2 and opponent taking 2
        me taking 2 and opponent taking 3
    worst of
        me taking 3 and opponent taking 1
        me taking 3 and opponent taking 2
        me taking 3 and opponent taking 3

因此有9种可能性可以检查,每一种都是一个严格减少砖块的游戏,可以独立解决(这是能够使用动态编程方法的关键点)上述原因。