LCP 31-变换的迷宫
某解密游戏中,有一个 N\*M 的迷宫,迷宫地形会随时间变化而改变,迷宫出口一直位于 (n-1,m-1)
位置。迷宫变化规律记录于 maze
中,maze[i]
表示 i
时刻迷宫的地形状态,"."
表示可通行空地,"#"
表示陷阱。 地形图初始状态记作maze[0]
,此时小力位于起点 (0,0)
。此后每一时刻可选择往上、下、左、右其一方向走一步,或者停留在原地。
小力背包有以下两个魔法卷轴(卷轴使用一次后消失): + 临时消除术:将指定位置在下一个时刻变为空地; + 永久消除术:将指定位置永久变为空地。
请判断在迷宫变化结束前(含最后时刻),小力能否在不经过任意陷阱的情况下到达迷宫出口呢? 注意: 输入数据保证起点和终点在所有时刻均为空地。 示例
1: >输入:maze = [[".#.","#.."],["...",".#."],[".##",".#."],["..#",".#."]]
>
输出:
true
> >解释: ![maze.gif](https://pic.leetcode-cn.com/1615892239-SCIjyf-
maze.gif) 示例 2: >输入:maze = [[".#.","..."],["...","..."]]
> >输出:false
>
解释:由于时间不够,小力无法到达终点逃出迷宫。 示例 3: >输入:maze = [["...","...","..."],[".##","###","##."],[".##","###","##."],[".##","###","##."],[".##","###","##."],[".##","###","##."],[".##","###","##."]]
输出:
false
> >解释:由于道路不通,小力无法到达终点逃出迷宫。 提示: -1 <= maze.length <= 100
-1 <= maze[i].length, maze[i][j].length <= 50
-maze[i][j]
仅包含"."
、"#"
解题思路
双百 %%%
1 | f[时间,位置x,位置y,临时卷轴,永久卷轴] |
代码
1 | public class Solution { |