我正在尝试解决问题Q5。 https://utdallas.edu/~kyle.fox/courses/cs4349fa17/final.pdf 我认为寻找组成部分最多的作品是一种变体。 产生最佳解(对a部分的答案)的dp是
for each square:
for each move:
dp[squareno][moveno]=0
for each move:
dp[square][moveno]=1+min(dp[squareno+moveno][move])
复杂度是theta(4 * 4 * n),其中n是平方数。 如果您查看解决方案并提出一些修改建议,将不胜感激。
答案 0 :(得分:0)
不需要额外的状态move
。目标也是最大化。
游戏的目的是在游戏开始前尽可能多地移动 游戏结束。
伪代码:
dp[i]
将是“最大移动量从第ith个十字穿过正方形行的最右端”。如果无法穿越,它将为-1
。
for square n..1:
dp[i] = -1
for all val in square i:
if square+val > n:
dp[i] = max(dp[i], 1)
continue
if dp[i+val] == -1:
continue
dp[i] = max(dp[i], 1 + dp[i+val])