面试真题:人推箱子(详细题目 + 手写思路 + 满分答案).docxVIP

  • 0
  • 0
  • 约3.58千字
  • 约 5页
  • 2026-09-19 发布于河北
  • 举报

面试真题:人推箱子(详细题目 + 手写思路 + 满分答案).docx

面试真题:人推箱子(详细题目+手写思路+满分答案)

一、面试题目(笔试/机试原题)

给定一个二维网格地图,模拟人推箱子的移动逻辑,判断箱子能否被推到目标终点。

地图元素定义

0:空地(可以站人、箱子可以移动)

1:墙壁(障碍物,人和箱子都不能进)

2:人的起始位置

3:箱子的起始位置

4:箱子目标终点

移动规则(面试核心考点)

人可以上下左右四个方向移动,只能走到空地、终点位置,不能穿墙、不能直接穿箱子。

当人朝着箱子的方向移动时,触发推箱子逻辑:

箱子被推动的下一格必须是空地/终点,且不能是墙壁、不能再有其他箱子。

推动成功后:人移动到箱子原来的位置,箱子向前移动一格。

只要箱子任意时刻到达终点,直接返回true(通关)。

地图中只有一个人、一个箱子、一个终点。

题目要求

编写函数,传入二维网格地图,返回布尔值:箱子是否可以被推到终点。

二、面试解题思路(面试官最爱听的白话思路)

这道题不是简单的人走路BFS,是双状态BFS,很多人挂在这里:只记录人的位置,忽略了箱子位置。

核心关键点

整个游戏的状态由两个东西共同决定:人的坐标+箱子的坐标。

同一个箱子位置,人从不同方向过来,是完全不一样的可推状态,所以visited不能只记录人,要记录(人x,人y,箱x,箱y)。

拆分两种情况

普通移动:人往前走,前面没有箱子,单纯换位置,不影响箱子。

推箱子移动:人前方

文档评论(0)

1亿VIP精品文档

相关文档