文章目次
1. 题目
「推箱子」是一款风靡全球的益智小游戏,玩家需要将箱子推到堆栈中的目标位置。
游戏舆图用巨细为 n * m 的网格 grid 表现,此中每个元素可以是墙、地板大概是箱子。
现在你将作为玩家加入游戏,按规则将箱子 'B' 移动到目标位置 'T' :
- 玩家用字符 'S' 表现,只要他在地板上,就可以在网格中向上、下、左、右四个方向移动。
- 地板用字符 '.' 表现,意味着可以自由行走。
- 墙用字符 '#' 表现,意味着障碍物,不能通行。
- 箱子仅有一个,用字符 'B' 表现。相应地,网格上有一个目标位置 'T'。
玩家需要站在箱子旁边,然后沿着箱子的方向举行移动,此时箱子会被移动到相邻的地板单位格。记作一次「推动」。
玩家无法越过箱子。
返回将箱子推到目标位置的最小 推动 次数,如果无法做到,请返回 -1。
示例 1:
[code]输入:grid = [["#","#","#","#","#","#"], ["#","T","#","#","#","#"], ["#",".",".","B",".","#"], ["#",".","#","#",".","#"], ["#",".",".",".","S","#"], ["#","#","#","#","#","#"]]输出:3表明:我们只需要返回推箱子的次数。示例 2:输入:grid = [["#","#","#","#","#","#"], ["#","T","#","#","#","#"], ["#",".",".","B",".","#"], ["#","#","#","#",".","#"], ["#",".",".",".","S","#"], ["#","#","#","#","#","#"]]输出:-1示例 3:输入:grid = [["#","#","#","#","#","#"], ["#","T",".",".","#","#"], ["#",".","#","B",".","#"], ["#",".",".",".",".","#"], ["#",".",".",".","S","#"], ["#","#","#","#","#","#"]]输出:5表明:向下、向左、向左、向上再向上。示例 4:输入:grid = [["#","#","#","#","#","#","#"], ["#","S","#",".","B","T","#"], ["#","#","#","#","#","#","#"]]输出:-1 提示:1 |