当前位置:首页 > 动态规划 > 正文
洛谷P7074方格取数(CSPJ2020)
68+

题目大意:二维棋盘,每个位置有分值,从左上角走到右下角,只能往右、往上、往下三个方向走,最大分值是多少?

题目描述

设有 的方格图,每个方格中都有一个整数。现有一只小熊,想从图的左上角走到右下角,每一步只能向上、向下或向右走一格,并且不能重复经过已经走过的方格,也不能走出边界。小熊会取走所有经过的方格中的整数,求它能取到的整数之和的最大值。

输入格式

第一行有两个整数

接下来 行每行 个整数,依次代表每个方格中的整数。

输出格式

一个整数,表示小熊能取到的整数之和的最大值。

输入输出样例

输入 #1
3 4
1 -1 3 2
2 -1 4 -1
-2 2 -3 -1
输出 #1
9
输入 #2
2 5
-1 -1 -3 -2 -7
-2 -1 -4 -1 -2
输出 #2
-10

数据规模与约定

  • 对于 的数据,
  • 对于 的数据,
  • 对于 的数据,
  • 对于 的数据,。方格中整数的绝对值不超过

解题思路

爆搜路径,记忆化即可。走到某一个位置,如果是从左边过来的,会有3个方向可以走;如果是从上面或者下面过来的,那么只有2个方向可以走;记忆化的时候,需要记录这些情况,所以不仅需要记录位置,还需要记录上一个位置,位置不好记,可以记录方向!极端情况,可以走遍整个棋盘,需要开long long!

程序实现

记忆化搜索

动态规划:为了避免上下乱走,先处理从左上方过来,再处理从左下方过来,并分开两个数组记录最优值,最后再合并在一起。

更多

About

坚决不Copy代码!

本文标签:,,,,,,,,,,

洛谷P7074方格取数(CSPJ2020):等您坐沙发呢!

发表评论

😉😐😡😈🙂😯🙁🙄😛😳😮mrgreen.png😆💡😀👿😥😎😕

快捷键:Ctrl+Enter