解题思路:
很明显用广搜就能解决。
参考代码:
n = int(input()) #模拟地图 mMap = [list(input().split()) for _ in range(n)] #标记是否访问过、访问过为True未访问过为False mVis = [[False for _ in range(n)] for _ in range(n) ] mVis[0][0] = True #模拟在图中上下左右走 xMove = [-1,1,0,0] yMove = [0,0,1,-1] #队列记录坐标和走到的次数 queue = [[0,0,0]] while queue: #当走到了b点退出广搜、打印走的次数 if mMap[queue[0][0]][queue[0][1]] == 'B': print(queue[0][2]) break for i in range(4): dx = queue[0][0] + xMove[i] dy = queue[0][1] + yMove[i] if dx>=0 and dx<=n-1 and dy>=0 and dy<=n-1: if not mVis[dx][dy] and mMap[queue[0][0]][queue[0][1]] != mMap[dx][dy]: '''没有访问过并且不是连续的走-和+就可以将点加入队列''' queue.append([dx,dy,queue[0][2]+1]) mVis[dx][dy] = True queue.pop(0) if len(queue) == 0: """队列为空说明走不到B点""" print("-1")
0.0分
3 人评分
【出圈】 (C语言代码)浏览:558 |
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:592 |
母牛的故事 (C语言代码)浏览:934 |
【蟠桃记】 (C语言代码)浏览:664 |
C语言程序设计教程(第三版)课后习题5.5 (C语言代码)浏览:560 |
模拟计算器 (C++代码)浏览:806 |
C语言程序设计教程(第三版)课后习题10.1 (C语言代码)浏览:537 |
C语言程序设计教程(第三版)课后习题11.3 (C语言代码)浏览:577 |
DNA (C语言代码)浏览:741 |
模拟计算器 (C语言代码)浏览:2300 |