简单
技术面试0 次浏览

网易游戏中,有一个角色移动的场景,角色在一个二维平面上移动,每次可以向上下左右四个方向移动一格。现在给定角色的初始位置和目标位置,设计一个算法计算角色最少需要移动多少步才能到达目标位置。

网易算法工程师
算法设计游戏业务二维平面

答题要点

推荐使用广度优先搜索(BFS)的答题框架。关键要点如下:1. 定义数据结构:使用队列来存储待探索的位置和已经走过的步数。2. 边界条件:判断当前位置是否越界或已经访问过。3. 探索方向:向上下左右四个方向进行探索。4. 终止条件:当到达目标位置时,返回步数。示例思路:首先,将初始位置和步数 0 加入队列,然后不断从队列中取出位置进行探索,向四个方向移动,若新位置合法且未访问过,则加入队列并更新步数,直到到达目标位置。以下是简单的伪代码: python queue = [(start_x, start_y, 0)] visited = set() while queue: x, y, steps = queue.pop(0) if (x, y) == (target_x, target_y): return steps for dx, dy in [(0, 1), (0, -1), (1, 0), (-1, 0)]: new_x, new_y = x + dx, y + dy if is_valid(new_x, new_y) and (new_x, new_y) not in visited: visited.add((new_x, new_y)) queue.append((new_x, new_y, steps + 1))