ABC183E 棋盘 DP
AT 好像有很多棋盘 dfs / dp 题目。
可以分别 dp 统计向下、向右及右下的方案数。明显的,来到 \((i, j)\) 的方案数应该是其左、上、左上三个方向的方案数总和。则分别存储 \(p_{i, j}, q_{i, j}, r_{i, j}\) 为 \((i, j)\) 上一步为左、上、左上的格子移动的方案数即可。
要注意,可以移动多格。转移方程如下(当 \((i, j)\) 非障碍物):
\[\begin{cases}
f_{i, j} \gets p_{i - 1, j} + q_{i, j - 1} + r_{i - 1, j - 1} \\
p_{i, j} \gets p_{i - 1, j} + f_{i, j} \\
q_{i, j} \gets q_{i, j - 1} + f_{i, j} \\
r_{i, j} \gets r_{i - 1, j - 1} + f_{i, j}
\end{cases}
\]
不要忘记初始化,\(f_{1, 1}\) 要额外加上 \(1\)。
具体实现参考 代码。

浙公网安备 33010602011771号