📣 VIP通行证夏日特惠 限时立减$68
12
返回列表 发新帖
楼主: TonyJang
跳转到指定楼层
上一主题 下一主题
收起左侧

迷宫的小问题,大家帮忙看一下,加大米

🔗
 楼主| TonyJang 2014-7-4 09:46:22 | 只看该作者
全局:
itbwtw 发表于 2014-7-2 22:39
他用2表示墙壁,用0表示道路,已经走过的用1来表示
在递归函数里,他先用cell(i,j)=1;表示这个点走过了 ...

搜完第一个点后就一直在if(cell[i][j+1] == 0)里递归啊,根本轮不到向下
回复

使用道具 举报

🔗
 楼主| TonyJang 2014-7-4 09:46:29 | 只看该作者
全局:
readman 发表于 2014-7-2 17:49
- = ..leetcode unique path ii

搜完第一个点后就一直在if(cell[i][j+1] == 0)里递归啊,根本轮不到向下
回复

使用道具 举报

全局:
本帖最后由 数字媒体技术 于 2014-7-4 10:33 编辑
readman 发表于 2014-7-2 23:19
ArrayList result = new  ArrayList();
Arrays.sort(num)
boolean[] visited = new boolean[num.lengt ...
你这样编译Ok吗?
回复

使用道具 举报

🔗
readman 2014-7-4 12:42:55 | 只看该作者
全局:

嗯? 什么ok么?
我就是写个模版
回复

使用道具 举报

🔗
itbwtw 2014-7-5 11:42:33 | 只看该作者
全局:
TonyJang 发表于 2014-7-4 09:43
另外从Maze的第一个点开始就算一直向右遍历吧?右边的点满足为0也轮不到后面的if啊,只有到右边界的时候 ...

我明白你的意思了(虽然我还不知道你的(5,7)是怎么来的)。
你有这个问题的话我还是推荐你看一下我最开始回复的帖子。
下面关于你的这个问题:
抽象的来讲,你的问题是,一个函数在执行完了以后(即执行return ;了以后),程序接下来怎么运行。这个问题很简单,当然回到调用这个函数的地方,运行下一行。只不过递归有一点让人迷惑。
你可以用树来帮助你理解,这个程序向4个方向搜索,所以是一个四叉树(当然实际上不是这样,对墙壁和已经访问过的点不搜索)。调用一次递归函数就是开启一个子树(向右搜),子树搜完以后回到这里,开下一个子树(向下搜),再向左搜,再向上搜,搜完四个方向以后回到上一层,这对于上一层来说相当于搜完了一个方向,上一层会开启下一个方向,那下一个方向又开四个方向。。。。直到visit(1,1)这个函数所开的四个方向(实际上它只开了2个)全部return,整个图遍历结束

所以我引用的你说的这段话是错的,递归不是像你说的这样运作的,你说的是遍历一种线性数据结构,递归是像网一样运作的,它面向的非线性的数据结构(图)。
回复

使用道具 举报

🔗
itbwtw 2014-7-5 11:52:39 | 只看该作者
全局:
TonyJang 发表于 2014-7-4 09:46
搜完第一个点后就一直在if(cell[j+1] == 0)里递归啊,根本轮不到向下

说具体一点,这个递归是这样运作的:
向右搜到头,然后向下搜到头,然后向左搜到头,然后向上搜到头,全都到头了(死路),就往回走一个,然后接着搜下一个方向(你刚才4次搜到头对于往回走的这一层来说只搜完了一个方向,比如是搜完了右)然后下,左,上搜到头,然后又死路了,再往回走一个,然后向下一个方向。。。。
这种撞了南墙然后往回走一个的搜法就是所谓的深度优先遍历。。。。。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号
隐私提醒:
  • ☑ 禁止发布广告,拉群,贴个人联系方式:找人请去🔗同学同事飞友,拉群请去🔗拉群结伴,广告请去🔗跳蚤市场,和 🔗租房广告|找室友
  • ☑ 论坛内容在发帖 30 分钟内可以编辑,过后则不能删帖。为防止被骚扰甚至人肉,不要公开留微信等联系方式,如有需求请以论坛私信方式发送。
  • ☑ 干货版块可免费使用 🔗超级匿名:面经(美国面经、中国面经、数科面经、PM面经),抖包袱(美国、中国)和录取汇报、定位选校版
  • ☑ 查阅全站 🔗各种匿名方法

本版积分规则

>
快速回复 返回顶部 返回列表