状态转移方程求解惑

P1004 [NOIP2000 提高组] 方格取数

你这个状态转移方程并没有考虑到两次取数的路线同步移动,每个转移的状态仅仅是某个单次取数的转移。 ------------ e.g. ------------ **f[i][j][x][y] = max(f[i-1][j][x-1][y] , f[i-1][j][x][y-1] , f[i][j-1][x-1][y], f[i][j-1][x][y-1]) + a[i][j] + a[x][y]** ------------ 表示两条路线同时向左,用时向下或一上一下,而你的转移方程则是一左一不动,一下,一不动一左,或者一不动一下;而在移动过程中不可能停在原地 这样就丧失了二者一起移动的意义了) 所以您的转移方程有误
by linhongxu2008 @ 2024-05-02 16:19:05


@[linhongxu2008](/user/1311589) 我还是没太理解这个方程,xy在动的时候ij外层应该都是定值,所以ij我感觉也没动啊
by propitious @ 2024-05-03 10:59:37


@[propitious](/user/223333) i,j与x,y一定得同时动如果i,j动而x,y不动这样的转移就相当于 ```cpp dp[i][j] = max(dp[i-1][j],dp[i][j-1])+a[i][j] ``` 这样的动态规划是贪心的,只是局部的最优解,并非全局的最优解
by linhongxu2008 @ 2024-05-03 11:09:29


你可以去试看看两次dp后的结果之累加,只能得80
by linhongxu2008 @ 2024-05-03 11:10:51


如果按照你的算法,4维数组就失去意义了
by linhongxu2008 @ 2024-05-03 11:11:40


@[linhongxu2008](/user/1311589) 彳亍知道了
by propitious @ 2024-05-03 14:11:20


|