python 二维数组寻路算法
时间: 2023-10-17 08:06:23 浏览: 170
你可以使用广度优先搜索(BFS)算法来解决二维数组的寻路问题。下面是一个简单的示例代码,用于找到从起点到终点的最短路径:
```python
from collections import deque
def bfs(matrix, start, end):
# 获取二维数组的行数和列数
rows = len(matrix)
cols = len(matrix[0])
# 定义四个方向的偏移量,上、下、左、右
directions = [(-1, 0), (1, 0), (0, -1), (0, 1)]
# 使用队列来保存待访问的节点
queue = deque()
queue.append(start)
# 使用visited集合来记录已经访问过的节点
visited = set()
visited.add(start)
# 使用distances字典来记录每个节点到起点的距离
distances = {}
distances[start] = 0
while queue:
node = queue.popleft()
if node == end:
# 找到终点,返回最短路径长度
return distances[node]
x, y = node
for dx, dy in directions:
new_x, new_y = x + dx, y + dy
# 检查新的节点是否越界或已经访问过
if 0 <= new_x < rows and 0 <= new_y < cols and (new_x, new_y) not in visited and matrix[new_x][new_y] != 0:
# 更新新节点的距离,并添加到队列和visited集合中
new_node = (new_x, new_y)
queue.append(new_node)
visited.add(new_node)
distances[new_node] = distances[node] + 1
# 没有找到终点,返回-1表示无法到达
return -1
```
你可以根据实际情况调用这个函数,并传入相应的参数,例如起点坐标和终点坐标。注意,这个示例代码假设二维数组中的非零元素表示可以通过的路径,零表示障碍物。你可以根据实际需求进行修改。
阅读全文