P7642 [BalticOI 2006] JUMP THE BOARD! (Day 2)

题目描述

一个 $n×n$ 的游戏板是由整数填充的,每格一个非负整数。目标是从左上角以任何合法路径跳到右下角。任何一格中的整数表示跳离该位置的步长。如果步长将推进越出游戏板,那么在那个特定的方向上的跳步是禁止的。所有的跳步必须是向右或向下。请注意,$0$ 是一个死胡同,它阻止任何进一步的进展。 如图 $1$ 中所示的 $4×4$ 板,实圆标识起始位置,虚线圆标识目标位置。图 $2$ 展示了从起点位置到目标位置的三条合法路径,每个路径中都删除了不相关的数字。 ![TuLi](https://cdn.luogu.com.cn/upload/image_hosting/0ql0hhx0.png) 你的任务是编写一个程序来确定从左上角到右下角的合法路径的数量。

输入格式

第一行包含一个正整数 $n$,表示该板的行列数。接下来 $n$ 行数据。每行包含 $n$ 个整数,每个整数的范围是 $0 \cdots 9$。

输出格式

唯一的一行包含一个整数,即从左上角到右下角的合法路径数。

说明/提示

#### 数据规模与约定 - 对于 $100 \%$ 的数据, $4 \le n \le 100$。 - 合法路径的数量可能相当大。使用 $64$ 位整数变量(C 中的 `long long int`,Pascal 中的 `Int64`)只能获得 $70 \%$ 的分数。可以保证所有的输入导致的路径数可以用不超过 $100$ 位的数字写出。 #### 题目说明 来源于 [Baltic Olympiad in Informatics 2006](https://www.cs.helsinki.fi/group/boi2006/) 的 [Day 2:Jump](https://www.cs.helsinki.fi/group/boi2006/tasks/jump.pdf)。 由 @[求学的企鹅](/user/271784) 翻译整理。