从左列到右列找到矩阵的最大总和路径?

时间:2015-09-24 05:53:09

标签: algorithm data-structures dynamic-programming graph-algorithm

Jeff喜欢玩游戏,Gluttonous snake(诺基亚时代的老游戏)是他的最爱之一。然而,在玩过贪吃蛇这么多次后,他终于厌倦了原规则。为了给这款旧游戏带来新挑战,杰夫引入了新规则:

  1. 地面是一个网格,有n行和m列(1 <= n,m <= 500)。

  2. 每个单元格包含一个值v(-1 vi 99999),如果v为-1,则该单元格被阻塞,且蛇≤≤不能通过,否则,在蛇访问该单元格后,你可以得到v点。

  3. 蛇可以从这个地面的左边界的任何一个单元开始行进,直到它最终停在右边界的一个单元格中。

  4. 在这次旅行中,蛇只能上/下/右,并且只能访问每个细胞一次。 特殊情况:

  5. 一个。即使在左边界和右边界,蛇也可以上下移动。

    湾当蛇位于一列的顶部单元格时,它仍然可以上升,这需要玩家支付所有当前点数,然后蛇将被传送到该列的底部单元格,反之亦然。

    在创造了这样一款新游戏之后,杰夫很困惑如何获得最高分。请帮他写一个程序来解决这个问题。输入第一行包含两个整数n(行)和m(列),(1 <= n,m <= 500),由单个空格分隔。接下来的n行描述网格。每行包含m个整数vi(-1 vi 99999)≤≤vi= -1表示单元格被阻塞。输出输出您可以获得的最高分。如果蛇无法到达右侧,则输出-1。

    输入:

    4 4

    -1 4 5 1

    2 -1 2 4

    3 3 -1 3

    4 2 1 2

    输出:

    23

1 个答案:

答案 0 :(得分:0)

我已经解决了这个问题,但问题是你没试过。如果你会尝试,这里的每个人都会帮助你。不要只是复制和粘贴,而是写下你陷入困境的地方。