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

这样的熄灯问题会不会面试?

全局:

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

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

x
本帖最后由 数字媒体技术 于 2014-5-16 21:45 编辑





这得老长时间了。。。

4.jpg (106.63 KB, 下载次数: 4)

4.jpg

上一篇:Binary Tree和Binary Search Tree的递归写法空间复杂度?
下一篇:关于怎么刷算法题的困惑
🔗
ccarter 2014-5-23 14:31:39 | 只看该作者
全局:
本帖最后由 ccarter 于 2014-5-23 14:33 编辑

会面试……其实这个与其说是算法题还不如说是脑筋急转弯
比如一个m*n的矩阵
简单的想法就是2^(m*n) 遍历所有可能 但是复杂度太高
我们考虑这样的一个矩阵
11010
00100
01001
........
如果我不动第一排的灯,那我怎么能让第一排的第三个和第五个灯熄灭呢?我只能通过第二排的第三个灯和第五个灯。注意第二排我只能动第三个和第五个灯,动其他灯都会造成第一排的某个灯亮起。
这样矩阵变成了:
11111
01001
01100
........
对第三行做同样的操作:目的是灭掉第二行亮着的灯。只能操作第三行的1、3、4号灯。如此往复直到最后一行,如果最后一行操作完,也全灭了,那你就成功了……
于是问题变成了:第一行应该怎么操作。
这个就好办了,2^n遍历。然后进行刚才介绍的操作看最后一行能否全灭。总复杂度(2^n)*m*n。
那如果n特别大呢?比如5*100000?那当然按列操作了……所以总复杂度是(2^min(m,n))*m*n。如果m和n都特别大呢?面试不会问的,相信我……(其实是我也不知道有没有有效的算法了)

评分

参与人数 2大米 +30 收起 理由
北美农民 + 15
xz28us + 15

查看全部评分

回复

使用道具 举报

🔗
xz28us 2014-5-23 17:19:03 | 只看该作者
全局:
ccarter 发表于 2014-5-23 14:31
会面试……其实这个与其说是算法题还不如说是脑筋急转弯
比如一个m*n的矩阵
简单的想法就是2^(m*n) 遍历 ...

赞思路。这个面试的时候会要求把代码也写出来么
回复

使用道具 举报

🔗
 楼主| 数字媒体技术 2014-5-23 22:01:29 | 只看该作者
全局:
ccarter 发表于 2014-5-23 14:31
会面试……其实这个与其说是算法题还不如说是脑筋急转弯
比如一个m*n的矩阵
简单的想法就是2^(m*n) 遍历 ...

大神啊!我写出来要一个多小时。。。。
回复

使用道具 举报

🔗
robinho364 2014-5-23 22:39:48 | 只看该作者
全局:
这个问题是经典算法题,早就被人研究透了。

复杂度就是mn(2^n),我相信很难有更优的算法了。

事实上也可以用高斯消元法求一组解。
回复

使用道具 举报

🔗
 楼主| 数字媒体技术 2014-5-23 22:43:07 | 只看该作者
全局:
robinho364 发表于 2014-5-23 22:39
这个问题是经典算法题,早就被人研究透了。

复杂度就是mn(2^n),我相信很难有更优的算法了。

嗯,我刚刚开始算法这类的训练,以前玩开发,用些小工具,活少简单,算法太难,懒得搞~
回复

使用道具 举报

🔗
robinho364 2014-5-23 22:46:21 | 只看该作者
全局:
哦,对了。

如果你只要求输出一组解的话,高斯消元的确就是高效解法哈。
回复

使用道具 举报

🔗
robinho364 2014-5-23 22:53:41 | 只看该作者
全局:
数字媒体技术 发表于 2014-5-23 22:43
嗯,我刚刚开始算法这类的训练,以前玩开发,用些小工具,活少简单,算法太难,懒得搞~

Hi,突然发现你看的是pku的课件?

pku讲的倒是很不错!
回复

使用道具 举报

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

本版积分规则

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