首页
题库
面试
求职
学习
竞赛
More+
所有博客
搜索面经/职位/试题/公司
搜索
我要招人
去企业版
登录 / 注册
首页
>
试题广场
>
在一个n*m的格子迷宫内,有部分格子可以通过,有部分格子是禁
[问答题]
在一个n*m的格子迷宫内,有部分格子可以通过,有部分格子是禁止通行的,允许上下左右4个方向移动。 假定小强在迷宫中的坐标(i,j)的位置上,从迷宫的任意边界走出即为走出迷宫。请给出小强以最少步骤走出迷宫的算法。
添加笔记
求解答(15)
邀请回答
收藏(33)
分享
纠错
3个回答
添加回答
1
一碗阳光
最小生成树,
设置初始标记值flag为1,建立n*m的二维数组,全部初始化为0,障碍物时-1,从小强的位置(i,j)开始(标记为1),每次对四周的四个格子中能到达的格子(不包含到达过得的格子和)标记为flag+1,然后flag自加1,递归标记整个二维数组直到无法到达新的位置或已到达边界,如果到达边界则从第一个到达的边界开始回溯,每次选择周围格子中数字最小的整数,直到走到格子中数字为1的方格为止,此时走的步数即为最小步数,如果走完所有格子都未到达边界,则无法走出。
编辑于 2017-08-23 15:52:58
回复(0)
0
牛客258995545号
def minDistance(i,j):
step=0
m=len(grid)
n=len(grid[0])
start_i,start_j=i,j
while new_i <m and new_y<n:
direction=[(0,1),(0,-1),(1,0),(-1,0)]
for x,y in direction:
new_i,new_j= start_i+x,start_j+y
step+=1
发表于 2020-09-09 06:45:56
回复(0)
0
没错_我就是你的雷哥
a,b,c,d=[向左、向右、向上、向下]
if a=True:
a=a+1
if a=0 or a=m:
return 1
else:
b=b+1
if b=0 or b=m
return 1
if c=True
c=c+1
if c=0 or c=n
return 1
else:
d=d+1
if d=0 or d=n;
return 1
发表于 2018-04-09 20:45:09
回复(0)
这道题你会答吗?花几分钟告诉大家答案吧!
提交观点
问题信息
2017
算法工程师
滴滴
上传者:
小小
难度:
3条回答
33收藏
3603浏览
热门推荐
相关试题
下面描述中,符合结构化程序设计风格...
搜狐
Java工程师
C++工程师
iOS工程师
安卓工程师
运维工程师
前端工程师
算法工程师
PHP工程师
2018
评论
(1)
分页系统的逻辑地址结构是一维的,分...
操作系统
评论
(1)
关于分段系统与分页系统的区别,描述...
操作系统
评论
(1)
已知a
40
=...
京东
职能
2019
财务
保险
评论
(1)
有20000人的就餐需求,现建了一...
评论
(1)
扫描二维码,关注牛客网
意见反馈
下载牛客APP,随时随地刷题