考虑一种游戏,其中游戏板是具有n
行和m
列的网格。您从网格的左下角开始(假设它具有坐标(0,0)
)。您的评分为0
,广告资源空间为I > 0
。
在网格的每个单元格中,可能存在两种情况之一,单元格为空,或包含一些战利品。 Loot的大小为x
,值为v
,你可以想到被细胞索引的每件潜在战利品,即L(i,j)
= (x(i,j), v(i,j))
,其中{{1}如果单元格为空。
从单元格L(i,j) = (0, 0)
,玩家可以将(i, j)
行向上移动到三个单元格中的一个,1
,(i + 1, j − 1)
或(i + 1, j)
。玩家不能向下移动行或左右移动。当玩家到达有战利品的牢房时,他们可以选择接受或离开。拿下战利品会使玩家的库存空间缩小(i + 1, j + 1)
,同时将价值增加x
。
动态编程算法如何应用于此?
我认为子问题会向上移动,只要上面有一行,并且每个都有一个左/右。它会选择具有最高值v
的任何一个并且适合我们的广告资源v
,否则它就会离开它。