楼主: newkid

[精华] 趣味SQL:微软面试题:过河

[复制链接]
论坛徽章:
38
授权会员
日期:2005-10-30 17:05:332012新春纪念徽章
日期:2012-02-13 15:12:09现任管理团队成员
日期:2011-11-07 09:46:59ITPUB十周年纪念徽章
日期:2011-11-01 16:19:41ITPUB9周年纪念徽章
日期:2010-10-08 09:31:21版主3段
日期:2012-05-15 15:24:112009新春纪念徽章
日期:2009-01-04 14:52:282010新春纪念徽章
日期:2010-03-01 11:06:202009日食纪念
日期:2009-07-22 09:30:00祖国60周年纪念徽章
日期:2009-10-09 08:28:00
41#
发表于 2012-3-29 00:42 | 只看该作者
本帖最后由 guostong 于 2012-3-28 11:45 编辑

3人容量的测试:

CREATE TABLE bridge_crossing (
        name  VARCHAR2(10) PRIMARY KEY
       ,time  NUMBER
       );
      
INSERT INTO bridge_crossing VALUES ('A', 1);
INSERT INTO bridge_crossing VALUES ('B', 2);
INSERT INTO bridge_crossing VALUES ('C', 5);
INSERT INTO bridge_crossing VALUES ('D', 10);
insert into bridge_crossing values ('F', 20);
insert into bridge_crossing values ('E', 15);
COMMIT;

结果:

NAME       PAST_NAME  BACK_NAME        TIME       STEP
---------- ---------- ---------- ---------- ----------
CDEFAB     ABCDEFAB   BA                 30          5
CDEFAB     ABCDEFAB   AB                 30          5
CDEFAB     ABCDEFAB   BA                 30          5
CDEFAB     ABCDEFAB   AB                 30          5
CDEFAB     ABCDEFAB   AB                 33          5
CDEFAB     ABCDEFAB   BA                 33          5
CDEFAB     ACDAEFAB   AA                 34          5
CDEFAB     ACDAEFAB   AA                 34          5
EFCDAB     AEFACDAB   AA                 34          5
EFCDAB     AEFACDAB   AA                 34          5
EFCDAB     BEFACDAB   BA                 35          5

使用道具 举报

回复
论坛徽章:
484
ITPUB北京香山2007年会纪念徽章
日期:2007-01-24 14:35:02ITPUB北京九华山庄2008年会纪念徽章
日期:2008-01-21 16:50:24ITPUB北京2009年会纪念徽章
日期:2009-02-09 11:42:452010新春纪念徽章
日期:2010-03-01 11:04:552010数据库技术大会纪念徽章
日期:2010-05-13 10:04:272010系统架构师大会纪念
日期:2010-09-04 13:35:54ITPUB9周年纪念徽章
日期:2010-10-08 09:28:512011新春纪念徽章
日期:2011-02-18 11:43:32ITPUB十周年纪念徽章
日期:2011-11-01 16:19:412012新春纪念徽章
日期:2012-01-04 11:49:54
42#
发表于 2012-3-29 01:35 | 只看该作者
lugionline 发表于 2012-3-28 10:03
记在左岸为0,在右岸为1,于是问题化为:
求状态空间 (0,0,0,0, 0) 到 (1,1,1,1, 1)的最短路径 // 前面四个 ...

又见神仙,欢迎欢迎^_^

使用道具 举报

回复
论坛徽章:
484
ITPUB北京香山2007年会纪念徽章
日期:2007-01-24 14:35:02ITPUB北京九华山庄2008年会纪念徽章
日期:2008-01-21 16:50:24ITPUB北京2009年会纪念徽章
日期:2009-02-09 11:42:452010新春纪念徽章
日期:2010-03-01 11:04:552010数据库技术大会纪念徽章
日期:2010-05-13 10:04:272010系统架构师大会纪念
日期:2010-09-04 13:35:54ITPUB9周年纪念徽章
日期:2010-10-08 09:28:512011新春纪念徽章
日期:2011-02-18 11:43:32ITPUB十周年纪念徽章
日期:2011-11-01 16:19:412012新春纪念徽章
日期:2012-01-04 11:49:54
43#
发表于 2012-3-29 01:44 | 只看该作者
guostong 发表于 2012-3-28 22:50
加上对回头的人的限制以后,效率好多了。
规定用最快两个人做回送。

对,而且第一轮回头总用最快的,第二轮回头才用次快的

若再增加一人,速度分别是1/2/5/7/10,则

1/2:2
1:1
7/10:10
2:2
————————
方案A:
1/2:2
1:1
1/5:5
总计8分钟

方案B:
2/5:5
2:2
1/2:2
总计9分钟


再次增加一人,速度分别是1/2/5/7/8/10,则
1/2:2
1:1
8/10:10
2:2
————————
接下来问题变为和四个人相似,显然1/2/5/7的行走方法应该和1/2/5/10的类似,先最快的一组过,最快的回,最慢的一组过,次快的回,最快的一组再过,即可

所以问题经过逻辑推演,就变为一组往复不断的循环操作,只不过奇偶有别而已

使用道具 举报

回复
论坛徽章:
484
ITPUB北京香山2007年会纪念徽章
日期:2007-01-24 14:35:02ITPUB北京九华山庄2008年会纪念徽章
日期:2008-01-21 16:50:24ITPUB北京2009年会纪念徽章
日期:2009-02-09 11:42:452010新春纪念徽章
日期:2010-03-01 11:04:552010数据库技术大会纪念徽章
日期:2010-05-13 10:04:272010系统架构师大会纪念
日期:2010-09-04 13:35:54ITPUB9周年纪念徽章
日期:2010-10-08 09:28:512011新春纪念徽章
日期:2011-02-18 11:43:32ITPUB十周年纪念徽章
日期:2011-11-01 16:19:412012新春纪念徽章
日期:2012-01-04 11:49:54
44#
发表于 2012-3-29 01:45 | 只看该作者
lastwinner 发表于 2012-3-29 01:44
对,而且第一轮回头总用最快的,第二轮回头才用次快的

若再增加一人,速度分别是1/2/5/7/10,则

当然,需要先从数学上证明上述走法是最快的

使用道具 举报

回复
论坛徽章:
484
ITPUB北京香山2007年会纪念徽章
日期:2007-01-24 14:35:02ITPUB北京九华山庄2008年会纪念徽章
日期:2008-01-21 16:50:24ITPUB北京2009年会纪念徽章
日期:2009-02-09 11:42:452010新春纪念徽章
日期:2010-03-01 11:04:552010数据库技术大会纪念徽章
日期:2010-05-13 10:04:272010系统架构师大会纪念
日期:2010-09-04 13:35:54ITPUB9周年纪念徽章
日期:2010-10-08 09:28:512011新春纪念徽章
日期:2011-02-18 11:43:32ITPUB十周年纪念徽章
日期:2011-11-01 16:19:412012新春纪念徽章
日期:2012-01-04 11:49:54
45#
发表于 2012-3-29 01:46 | 只看该作者
newkid 发表于 2012-3-28 00:35
我把CONNECT BY的也写出来了,和递归大同小异,只是必须事后计算总时间。

如果把桥的容量修改一下,比如 ...

回程的策略可能会很有挑战,不过经证明后,应该每次还是只回来一个人才能保证最快

使用道具 举报

回复
论坛徽章:
519
奥运会纪念徽章:垒球
日期:2008-09-15 01:28:12生肖徽章2007版:鸡
日期:2008-11-17 23:40:58生肖徽章2007版:马
日期:2008-11-18 05:09:48数据库板块每日发贴之星
日期:2008-11-29 01:01:02数据库板块每日发贴之星
日期:2008-12-05 01:01:03生肖徽章2007版:虎
日期:2008-12-10 07:47:462009新春纪念徽章
日期:2009-01-04 14:52:28数据库板块每日发贴之星
日期:2009-02-08 01:01:03生肖徽章2007版:蛇
日期:2009-03-09 22:18:532009日食纪念
日期:2009-07-22 09:30:00
46#
 楼主| 发表于 2012-3-29 03:05 | 只看该作者
guostong 发表于 2012-3-28 22:50
加上对回头的人的限制以后,效率好多了。
规定用最快两个人做回送。

你这个“规定”,果然是画龙点睛!

使用道具 举报

回复
论坛徽章:
8
玉兔
日期:2015-11-16 10:18:00铁扇公主
日期:2015-10-27 21:47:42九尾狐狸
日期:2015-12-11 22:31:15
47#
发表于 2012-3-29 09:30 | 只看该作者
newkid 发表于 2012-3-28 21:09
一看就是行家出手!
我也是用的这个方法,只不过我没把手电筒当作一位而是单独的一列,但原理是一样的。 ...

这次就不写了,最近脑细胞死亡比较严重

使用道具 举报

回复
论坛徽章:
3
ITPUB十周年纪念徽章
日期:2011-11-01 16:24:51蜘蛛蛋
日期:2012-04-19 16:07:402013年新春福章
日期:2013-02-25 14:51:24
48#
发表于 2012-3-29 09:52 | 只看该作者
guostong 发表于 2012-3-28 22:02
递归写法,可以任意个人:

with steps (name, past_name, back_name, time, step) as

这是db2的么?

使用道具 举报

回复
论坛徽章:
38
授权会员
日期:2005-10-30 17:05:332012新春纪念徽章
日期:2012-02-13 15:12:09现任管理团队成员
日期:2011-11-07 09:46:59ITPUB十周年纪念徽章
日期:2011-11-01 16:19:41ITPUB9周年纪念徽章
日期:2010-10-08 09:31:21版主3段
日期:2012-05-15 15:24:112009新春纪念徽章
日期:2009-01-04 14:52:282010新春纪念徽章
日期:2010-03-01 11:06:202009日食纪念
日期:2009-07-22 09:30:00祖国60周年纪念徽章
日期:2009-10-09 08:28:00
49#
发表于 2012-3-29 10:22 | 只看该作者
changhe325 发表于 2012-3-28 20:52
这是db2的么?

此话怎讲?

使用道具 举报

回复
论坛徽章:
519
奥运会纪念徽章:垒球
日期:2008-09-15 01:28:12生肖徽章2007版:鸡
日期:2008-11-17 23:40:58生肖徽章2007版:马
日期:2008-11-18 05:09:48数据库板块每日发贴之星
日期:2008-11-29 01:01:02数据库板块每日发贴之星
日期:2008-12-05 01:01:03生肖徽章2007版:虎
日期:2008-12-10 07:47:462009新春纪念徽章
日期:2009-01-04 14:52:28数据库板块每日发贴之星
日期:2009-02-08 01:01:03生肖徽章2007版:蛇
日期:2009-03-09 22:18:532009日食纪念
日期:2009-07-22 09:30:00
50#
 楼主| 发表于 2012-3-29 10:27 | 只看该作者
lugionline 发表于 2012-3-29 09:30
这次就不写了,最近脑细胞死亡比较严重

别跑别跑,我留到你心情舒畅再来写。

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表