测评会员优惠活动进行中 · 开通 VIP,有效期内测评不限次 VIP 优惠中 · 测评不限次 立即查看

A70609. 过河卒

编程题 提高

题目描述

A 点有一个过河卒,需要走到目标 B 点。

卒行走规则:可以向下、或者向右。同时在棋盘上的任一点有一个对方的马(如下图的 C 点),该马所在的点和所有跳跃一步可达的点称为对方马的控制点。

例如:下图 C 点可以控制 9 个点(图中的 P1,P2 \dots P8C ),卒不能通过对方马的控制点。 棋盘用坐标表示,现给定 A 点位置为 (0,0)B 点位置为 (n,m) (n,m 为不超过 20 的整数),马的位置 C(X,Y)(约定: C 点与 A 点不重叠,与 B 点也不重叠)。

要求你计算出卒从 A 点能够到达 B 点的路径的条数。

输入格式

B 点的坐标 (n,m) 以及对方马的坐标 (X,Y);(马的坐标一定在棋盘范围内,但要注意,可能落在边界的轴上)

输出格式

输出卒从 A 点能够到达 B 点的路径条数。(本题的路径条数可能会超过 10^9,但不会超过 10^{18},C/C++选手请注意使用long long)

输入输出样例

输入 #1
6 6 3 2
输出 #1
17

说明/提示

## 思路

「过河卒」找递推关系,用数组或滚动变量从前往后算。

## 步骤

1. 读入 $n$ 或初始值。
2. 写出 $f(n)$ 与更小项的关系并初始化。
3. 循环递推到目标并输出。