思路:动态规划
给定一片冰面,探险者初始位于(1,1),冰面由 . 和 * 组成,. 表示可以通行的空地,而 * 表示无法行走的障碍。每次探险者可以向正东、正南或东南方向滑行任意正整数个格子,求到达右下角所需要的最少步数。
可以发现,走到当前格子所需要的步数和上方格子,左上方格子以及左方格子有关,可以考虑动态规划解决。
定义:dp[i][j][0、1、2]分别表示从上方、从左上方、从左方走到(i,j)所需要的最小的步数
- dp[i][j][0]:从上方dp[i−1][j][0、1、2]转移到当前格,根据状态方程的定义,有dp[i][j][0]=min(dp[i−1][j][0],dp[i−1][j][1]+1,dp[i−1][j][2]+1)。即,如果上方格子也是从上方转移来的,那么不用+1,否则另两个方向转移来的需要+1(因为方向变了,如果方向不变,可以沿该方向连续滑行任意步)。