设有N*N的方格图,我们将其中的某些方格填入正整数,
而其他的方格中放入0。
某人从图得左上角出发,可以向下走,也可以向右走,直到到达右下角。
在走过的路上,他取走了方格中的数。(取走后方格中数字变为0)
此人从左上角到右下角共走3次,试找出3条路径,使得取得的数总和最大。
https://vijos.org/p/1143
好久没做题了QAQ。。。
一道多进程dp。从(1,1)走到(n,n)一共需要走2*n-2步,并且如果可以确定这一步所在的横坐标,那么就可以求出唯一确定的纵坐标。
用一个数组:dp[step][i][j][k] 表示在第step步,第一次走到了横坐标为i的点,第二次走到了横坐标为j的点,第三次走到了横坐标为k的点。所取的数的总和最大。
从第step-1步走到第step步共有8中走法。取它们的最大值加上这一步取的数的总和,然后再去重,得到的结果就是dp[step][i][j][k] 。
最终结果就是dp[2*n-2][n][n][n] + mat[1][1](因为之前没有算(1,1)的值)
#include