查看: 2916| 回复: 10
跳转到指定楼层
上一主题 下一主题
收起左侧

[树/链表/图] 求一道题思路

全局:

注册一亩三分地论坛,查看更多干货!

您需要 登录 才可以下载或查看附件。没有帐号?注册账号

x
在一个迷宫中,给定起点终点,
迷宫中1代表礼物,2代表墙,3代表空地
要求输出收集完所有礼物以后走到终点的最短路径。如果不可能收集完则输出-1

上一篇:面试的时候求最小值我用了初始最大整数,居然...
下一篇:求问关于k个最小元素
🔗
gc1993114 2016-10-24 00:06:28 | 只看该作者
全局:
先数一下有几个礼物,dfs应该可以吧?就是复杂度有点高…可是bfs走重复的点,好像要更新礼物数…不知道怎么弄
回复

使用道具 举报

🔗
QDkAc 2016-10-25 13:21:29 | 只看该作者
全局:
会两种方法
假设迷宫大小n*m 有k个礼物
第一种复杂度为k! + (nm)^2
做法:
(1)求出任意一对点之间最短路的长度,这可以通过nm次BFS做到
(2)枚举k个礼物经过的顺序,共k!种,相邻两个礼物之间用(1)求得得最短路连接起来

第二种复杂度为nm*2^k
做法
用dis[x][y][S]表示从起点到点(x, y),而且必须已经经过S里面的礼物(S是一个集合)
这样答案就是dis[终点][全集]
具体写代码的时候S可以用一个int表示,用一些位运算的技巧

评分

参与人数 1大米 +3 收起 理由
14417335 + 3 给你点个赞!

查看全部评分

回复

使用道具 举报

🔗
QDkAc 2016-10-25 13:32:38 | 只看该作者
全局:
本帖最后由 QDkAc 于 2016-10-25 13:38 编辑
  1. 第二种算法伪代码

  2. Q.push(sx); Q.push(sy); Q.push(0); //太懒了,Q是一个队列,一次压3个弹3个
  3. while (Q.empty() == false){
  4.   int nowx = Q.front(); Q.pop(); int nowy = Q.front(); Q.pop(); int nowS = Q.front(); Q.pop();
  5.   for (int d = 0; d < 4; d++){ //上下左右
  6.     int newx = nowx + dx[d], newy = nowy + dy[d]; //const int dx[4] = {0, 0, 1, -1}; const int dy[4] = {1, -1, 0, 0};
  7.     if (newx, newy 超过边界或者是障碍)
  8.       continue;
  9.     //我们假设每个格子有一个0..k-1的label,用l[x][y]表示。可以自己设置一个。没有礼物的地方l[x][y] = -1;
  10.     int newS = nowS; //设置为之前经过的
复制代码
回复

使用道具 举报

🔗
QDkAc 2016-10-25 13:40:07 | 只看该作者
全局:
不知道为啥老吞代码 LZ先意会一下 不懂再问我吧
回复

使用道具 举报

🔗
bona 2017-12-24 23:16:00 | 只看该作者
全局:
最近面的一个startup中的oa题!当时只写了一个greedy/nearest neighbor的解法(并且还有bug),现在想到应该是tsp,但是tsp的解法略复杂,面试的时间短暂,能写完整的实在太挑战了。
回复

使用道具 举报

🔗
xliu34 2019-2-21 04:44:42 | 只看该作者
全局:
您好!
本帖隐藏的内容需要积分高于 200 才可浏览
您当前积分为 0。
使用VIP即刻解锁阅读权限或查看其他获取积分的方式
游客,您好!
本帖隐藏的内容需要积分高于 200 才可浏览
您当前积分为 0。
VIP即刻解锁阅读权限查看其他获取积分的方式
Unlock interview details and practice with AI
Curated Interview Questions from Top Companies


补充内容 (2019-2-21 06:03):
您好!
本帖隐藏的内容需要积分高于 200 才可浏览
您当前积分为 0。
使用VIP即刻解锁阅读权限或查看其他获取积分的方式
游客,您好!
本帖隐藏的内容需要积分高于 200 才可浏览
您当前积分为 0。
VIP即刻解锁阅读权限查看其他获取积分的方式
Unlock interview details and practice with AI
Curated Interview Questions from Top Companies
回复

使用道具 举报

🔗
xliu34 2019-2-21 06:01:18 | 只看该作者
全局:
步惊云 发表于 2019-2-21 04:58
弟弟, 我找不到movie, 是什么名字?

我打错年份了,难怪你找不到
回复

使用道具 举报

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

本版积分规则

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