请选择 进入手机版 | 继续访问电脑版

LeetCode 1263. 推箱子(BFS+DFS / 自定义哈希set)

[复制链接]
林雨宣 发表于 2021-1-1 18:33:05 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题
文章目次



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
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则


专注素材教程免费分享
全国免费热线电话

18768367769

周一至周日9:00-23:00

反馈建议

27428564@qq.com 在线QQ咨询

扫描二维码关注我们

Powered by Discuz! X3.4© 2001-2013 Comsenz Inc.( 蜀ICP备2021001884号-1 )