2296. 右脚扭伤的机械螃蟹“小八”​

1000ms 256MB 简单 递推算法
题目描述
一个 $n$ 行 $m$ 列的方格网格,每个方格的坐标用 $(x, y)$ 表示,其中左上角为 $(1,1)$,右下角为 $(n,m)$。 有一只右脚受伤的机械螃蟹,它只能**向下**或**向右**移动。它从左上角 $(1,1)$ 出发,目标是移动到右下角 $(n,m)$。每次移动只能前进一个方格,且螃蟹必须始终在网格内部移动。 请你计算螃蟹从起点到终点共有多少种不同的移动路线。 **注意:** - 对于 $1$ 行 $1$ 列的网格,螃蟹不需要移动,路线数为 $1$。 - 对于 $2$ 行 $3$ 列的网格,螃蟹共有 $3$ 种移动路线: - 路线 1:$(1,1) \to (1,2) \to (1,3) \to (2,3)$ - 路线 2:$(1,1) \to (1,2) \to (2,2) \to (2,3)$ - 路线 3:$(1,1) \to (2,1) \to (2,2) \to (2,3)$
输入格式
一行,包含两个正整数 $n$ 和 $m$ ($0 \lt n, m \le 20$),代表方格矩阵的行数和列数。
输出格式
一行,输出一个整数,表示不同的移动路线总数。
样例 1
输入 (Input)
2 3
输出 (Output)
3
- 对于所有数据:$0 \lt n, m \le 20$。 - **数学提示**:从 $(1,1)$ 到 $(n,m)$,一共需要向下走 $n-1$ 步,向右走 $m-1$ 步。总步数为 $n+m-2$。不同的路线数实际上是组合数: $$\binom{n+m-2}{n-1}$$ - **数据溢出提示**:当 $n = 20, m = 20$ 时,总路线数最大为 $\binom{38}{19} = 35,345,263,800$,该值已经超出了 32 位有符号整型(`int`)的最大范围(约 $2 \times 10^9$)。**请务必使用 64 位整型(C++ 中的 `long long`)进行存储与计算**,否则会导致计算结果发生整除或加法溢出。
自测终端 stdin → stdout
输入 stdin
CtrlShiftEnter
输出 stdout

                
错误 stderr

                
CtrlEnter提交
自动保存已开启
操作成功
wzs_oj@kernel:~ — wzs-sh
guest@wzsoj:~$
刷新页面 F5
复制 Ctrl+C
粘贴 Ctrl+V
搜索题目
站点公告
今日神谕
CSP 倒计时
排行榜
我的提交
Esc 关闭 Enter 跳转 支持模糊匹配数字