方格取数 双线DP
来源:互联网 发布:泰兰德的记忆知乎 编辑:程序博客网 时间:2024/05/16 15:03
设有N*N的方格图(N<=10,我们将其中的某些方格中填入正整数,而其他的方格中则放入数字0。如下图所示(见样例):
某人从图的左上角的A 点出发,可以向下行走,也可以向右走,直到到达右下角的B点。在走过的路上,他可以取走方格中的数(取走后的方格中将变为数字0)。
此人从A点到B 点共走两次,试找出2条这样的路径,使得取得的数之和为最大。
输入格式
输入的第一行为一个整数N(表示N*N的方格图),接下来的每行有三个整数,前两个表示位置,第三个数为该位置上所放的数。一行单独的0表示输入结束。
输出格式
只需输出一个整数,表示2条路径上取得的最大的和。
8
2 3 13
2 6 6
3 5 7
4 4 14
5 2 21
5 6 4
6 3 15
7 2 14
0 0 0
67
这一题中与众不同的地方就是走两次,而且走过的地方会变为0。
通常在动态规划中,需要考虑的东西变多是时候,就可以尝试着增加维度来解决。
现在考虑问题,走两次我们可以看做两个一起走,那么他们的坐标为x1,y1和x2,y2
| F[x1-1][y1][x2-1][y2], |
F[x1][y1][x2][y2] = max| F[x1][y1-1][x2][y2-1], | + [ S[x1][y1] + S[x2][y2] ( x1 != x2 || y1 != y2 ) ] + [ S[x1][y1] ( x1 == x2 && y1 == y2 ) ]
| F[x1-1][y1][x2][y2-1], |
| F[x1][y1-1][x2-1][y1], |
但是这个其实是可以优化的。
我们注意到 x1 + y1 == x2 + y2
所以 一个三维的状态就能解决问题了
F[i][x1][y1]
- 方格取数 双线DP
- 洛谷 p1004 方格取数 双线dp
- Hrbust 1214 方格取数 (双线程dp)
- [DP]方格取数
- 方格取数问题:双线动态规划
- 【DP】[NOIP2000]方格取数
- OpenJudge_P8786 方格取数(DP)
- 方格取数 (多进程DP)
- 多线程DP 三取方格数
- neu1458 方格取数 dp解法
- HDU - 1565 方格取数(1) (DP)
- hdu2167 方格取数 状态压缩dp
- 蓝桥杯 方格取数 (多线程DP)
- hrbust 1843 方格取数【状压dp】
- codevs 1043 方格取数 (DP)
- 【DP】洛谷 P1004 方格取数
- noip2000 方格取数(多重DP)
- NOIP2000 题解 方格取数 【DP】
- 如何使用VC+ADO修改access数据库中的字段名
- 动态加载菜单和动态调用窗体
- 解析Java对象的equals和hashCode的使用
- 医院设置(图)
- JSON教程
- 方格取数 双线DP
- Mysql安装时出现APPLY security settings错误
- 炫彩界面库(DirectUI)-QQ概念版模仿-动态的画面展现,异型透明,显示悠悠飘动的白云,不断起舞的花藤,给您不一样的视觉享受!
- FLEX中汉字转换为字节的function
- MYSQL常用命令列表
- 加分二叉树 树型DP
- IDS 是什么
- linux的chmod,chown命令使用详解
- asp.net网页版斗地主 已提供下载(开源) 测试版