解题思路:
很明显用广搜就能解决。
参考代码:
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语言程序设计教程(第三版)课后习题11.1 (C语言代码)浏览:622 |
C语言程序设计教程(第三版)课后习题9.10 (C语言代码)浏览:835 |
蚂蚁感冒 (C语言代码)浏览:1335 |
1118(求助_已解决)浏览:329 |
printf基础练习2 (C语言代码)浏览:508 |
C二级辅导-进制转换 (C语言代码)浏览:660 |
GC的苦恼 (C语言代码)浏览:621 |
敲七 (C++代码)浏览:1056 |
C语言训练-8除不尽的数 (C语言代码)浏览:1402 |
A+B for Input-Output Practice (I) (C语言代码)浏览:431 |