给定一片冰面,探险者初始位于(1,1),冰面由 . 和 * 组成,. 表示可以通行的空地,而 * 表示无法行走的障碍。每次探险者可以向正东、正南或东南方向滑行任意正整数个格子,求到达右下角所需要的最少步数。
可以发现,走到当前格子所需要的步数和上方格子,左上方格子以及左方格子有关,可以考虑动态规划解决。
定义:dp[i][j][0、1、2]分别表示从上方、从左上方、从左方走到(i,j)所需要的最小的步数
在一片矩形的冰面上,分布着一些可以通行的空地(用 . 表示)和无法行走的障碍(用 * 表示)。探险者初始位于左上角的 (1,1) 处,目标是到达右下角的 (n,m) 处。
探险者每次移动时,可以选择正东、正南或东南三个方向之一,并沿该方向连续滑行任意正整数个格子。滑行过程中不能穿越障碍格子,且最终停留的位置必须为一片空地。一次滑行被视为一步操作。
请你计算从起点到终点所需的最少步数。如果无法到达终点,请输出 −1。
网格的行数 n 和列数 m 均不超过 2000。
By signing up a CodeFun2000 universal account, you can submit code and join discussions in all online judging services provided by us.