参考了别人的答案编写的。 不过理解上重新理解了一下。 实际上对首行和首列进行初始化,因为首行和首列的里的每个位置累计的礼品价值是固定的。 如此就得到了固定的X,Y轴,然后接下来就可以基于这个X,Y轴上的点累加往下走,X,Y两层循环走遍每一个点,每走一个点都记录下当前点的最大价值(从上面来和从左边来哪个更大,即上面的点和左边的点哪个累计的礼品价值更大,然后加上当前点的值形成新的最大累加值),一直走到右下角为止。 import java.util.*; public class Bonus { public int getMost(int[][] board) { // write code he...