当前位置: 首页> 文旅> 文化 > 深圳网站开发外包公司_最新装修设计效果图大全_百度关键词查询排名怎么查_免费注册网站

深圳网站开发外包公司_最新装修设计效果图大全_百度关键词查询排名怎么查_免费注册网站

时间:2025/7/11 5:26:34来源:https://blog.csdn.net/jinjin_longlong/article/details/144201048 浏览次数:0次
深圳网站开发外包公司_最新装修设计效果图大全_百度关键词查询排名怎么查_免费注册网站

from collections import deque

def bfs(leiqu):
    n = len(leiqu)
    
    # 定义四个方向:右、下、左、上
    directions=[(0,1),(0,-1),(1,0),(-1,0)]
    
    # 初始化访问标记矩阵
    visited = [[False] * n for _ in range(n)]
    queue = deque()
    # 找到起点 A 和终点 B 的位置
    for i in range(n):
        for j in range(n):
            if leiqu[i][j] == 'A':
                start = (i, j)
            elif leiqu[i][j] == 'B':
                end = (i, j)
    

    # 初始化队列,将起点加入队列
    
    queue.append((start, 0, leiqu[start[0]][start[1]]))
    
    # 开始 BFS
    while queue:
        (x, y), step, current_energy = queue.popleft()
        
        # 标记当前节点为已访问
        visited[x][y] = True
        
        # 遍历四个方向
        for dx, dy in directions:
            nx, ny = x + dx, y + dy
            
            # 检查新节点是否在矩阵范围内且未被访问过
            if 0 <= nx < n and 0 <= ny < n and not visited[nx][ny]:
                next_energy = leiqu[nx][ny]
                
                # 检查能量区是否与当前节点的能量区不同
                if next_energy != current_energy:
                    # 如果找到了终点 B,返回步数
                    if (nx, ny) == end:
                        return step + 1
                    
                    # 将新节点加入队列
                    visited[nx][ny] = True
                    queue.append(((nx, ny), step + 1, next_energy))
    
    # 如果遍历完所有可能的路径都没有找到 B,返回 -1
    return -1

# 读取输入
n = int(input())
leiqu = [input().split() for _ in range(n)]

# 调用 BFS 函数并输出结果
result = bfs(leiqu)
print(result)

关键字:深圳网站开发外包公司_最新装修设计效果图大全_百度关键词查询排名怎么查_免费注册网站

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: