#6934. CSP-J 2020 方格取数(number)T4

CSP-J 2020 方格取数(number)T4

方格取数(number)

题目描述

设有一个 (n\times m) 的方格图,每个方格中都有一个整数。

现有一只小熊,想从图的左上角走到右下角。每一步只能向上、向下或向右走一格,并且不能重复经过已经走过的方格,也不能走出边界。

小熊会取走所有经过的方格中的整数,求它能取到的整数之和的最大值。

输入格式

输入文件名为 number.in。

第一行包含两个正整数 (n,m)。

接下来 (n) 行,每行包含 (m) 个整数,依次代表每个方格中的整数。

输出格式

输出文件名为 number.out。

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

样例 1

输入

3 4
1 -1 3 2
2 -1 4 -1
-2 2 -3 -1

输出

9

样例解释

小熊可以按照以下路径行走,其中 ((i,j)) 表示第 (i) 行、第 (j) 列的方格:

$$(1,1)\to(2,1)\to(2,2)\to(2,3)\to(1,3)\to(1,4)\to(2,4)\to(3,4)$$

取到的整数之和为:

1+2+(−1)+4+3+2+(−1)+(−1)=91+2+(-1)+4+3+2+(-1)+(-1)=9

可以证明,这是最大值。

注意,以下两种走法不符合题意:

  • 在第 2 行第 2 列向下走到第 3 行第 2 列,再向上返回,会重复经过第 2 行第 2 列的方格。
  • 走到第 1 行第 4 列就结束,没有到达右下角的终点。

样例 2

输入

2 5
-1 -1 -3 -2 -7
-2 -1 -4 -1 -2

输出

-10

样例解释

小熊可以按照以下路径行走:

(1,1)→(1,2)→(1,3)→(1,4)→(2,4)→(2,5)(1,1)\to(1,2)\to(1,3)\to(1,4)\to(2,4)\to(2,5)

取到的整数之和为:

(−1)+(−1)+(−3)+(−2)+(−1)+(−2)=−10(-1)+(-1)+(-3)+(-2)+(-1)+(-2)=-10

可以证明,这是最大值。

因此,请注意:取到的整数之和的最大值也可能是负数。

样例 3

见选手目录下的 number/number3.in 与 number/number3.ans。

数据范围与提示

数据比例 数据范围
对于 (20%) 的数据 (n,m\le 5)
对于 (40%) 的数据 (n,m\le 50)
对于 (70%) 的数据 (n,m\le 300)
对于 (100%) 的数据 (1\le n,m\le 1000),方格中整数的绝对值不超过 (10^4)

注:图片中输出格式的“输入文件名为 number.out”已纠正为“输出文件名为 number.out”。