问题:有一个米 X Ñ网格( = M,N < = 500)。网格中的每个单元格包含k个硬币(k可能为负数或0)。你从0,0开始,到m-1,n-1,你可以向下移动1步或向右移动1步,收集尽可能多的硬币。如果k ,那么该特定单元格有一个强盗,你不能移动到该单元格。如果移动到相邻单元中的任何一个,您将被盗取k硬币。当您达到m-1,n-1时,您将拥有多少个硬币?算法方法 - 寻找最佳路径在网格
例如在网格:
0,23,20,-32
13,14,44,-44
23,19,41,9
46,27,20,0
ANS = 129(通过以下路径:0-13-23-46-27-20-0)
时限:5秒
我不认为这个程序可以使用动态编程来解决。而且我还没有研究过图论(可以用来解决这个问题)。简单的递归方法是我能想到的唯一的东西,在给定的约束下效率太低。
那么如何解决这个问题呢?不要只是发布代码,告诉我如何开始。如果它涉及图论,那么说明涉及哪个定理将是非常有用的。
有趣的问题。这是一个家庭作业问题吗?如果是这样,你需要把它标记为家庭作业。该问题仍将由社区进行评估。 – HeatfanJohn
这不是一个家庭作业问题。我正在浏览一个codechef的编程竞赛问题,我遇到了这个问题。在它已经2天,但不能提出一个很好的解决方案。 :-( – Rushil
如果你在开始的网格的内容,它与加权边缘横跨问题的图表。 – msw