作者:陈太汉

《火车运煤问题》分析

  题目内容:

    你是山西的一个煤老板,你在矿区开采了有3000吨煤需要运送到市场上去卖,从你的矿区到市场有1000公里,你手里有一列烧煤的火车,这个火车最多只能装1000吨煤,且其能耗比较大——每一公里需要耗一吨煤。请问,作为一个懂编程的煤老板的你,你会怎么运送才能运最多的煤到集市?

    这是我在《酷壳》看到的一个面试题,主要是被陈浩的几句话给吸引了,还有就是哥比较喜欢思考,想证实一下哥是否适合做程序。

  火车运煤问题分析

    表面上看这个问题很难实现,因为火车最多只能载1000吨煤,而行驶1000公里刚好把火车上的1000吨煤烧光。等我们认真思考之后会发现,可以分段运输。如先运1000吨煤行驶100公里,放下800吨再返回,再运1000吨煤到100公里处,此时车上还有900吨,再加上100吨煤,车上就有1000吨煤,离终点还有900公里,到终点的时候还剩100吨煤。

    老实说哥没有天才的IQ,我先是边看《单身男女》边思考这个问题,差不多用了1个小时没有得出一个结果,也没有弄懂怎么来的5x+3y=2000 (y<=1000/3),以及求x+y的最大值, 回家在吃饭的时候又突然想起这个问题,又边吃饭边思考这个问题,有时放下碗在本子上画画,差不多用了四五十分钟,哥突然明白了5x+3y=2000,其实应该是5x+3y>=2000,当然也就明白了x+y的最大值,几分钟之后哥又明白了5x>=1000, 最后得出x=200,y=333.333333时x+y得出最大值533.33333333。

                                     -->3次                                     -->2次                                        -->1次

     A(起点)--------------------------------B----------------------------------C-----------------------------D(终点)

                                  <--2次              <--1次

|--------------------X-------------------|---------------Y------------------|--------------Z--------------|

    为什么是5x+3y>=2000?

      3000/1000=3,将3000吨煤运离原始地点,至少要运三次,因为运输的次数越多烧掉的煤就越多,到终点时剩下的煤就越少,所以把煤运离起始地点一定是3次,也就是5x(往3次,返两次)。中间必须停在两个地方(B,C)将煤放下,因为到C处的时候,车上的煤最大只能有1000吨,因为火车最多只能运1000吨,多了运不了,用两次运肯定是不可能的。所以从A到C至少烧了3000-1000=2000吨煤,即5x+3y>=2000.

    为什么是x+y的最大值?

      在C处剩余的煤最多只有1000吨,离终点越近剩下的煤就越多,所以在x+y取最大值的时候,剩下的煤最大。即剩下的煤=1000-Z=1000-Z=1000-(1000-(x+y))=x+y

     为什么是5x>=1000?

       同理在B处最多还剩2000吨煤,因为在B处时煤的数量还大于2000时,将这2000多吨煤运离B处至少要三次,三次的情况,我们就认为是A-->B,所以在B处至多只能要剩2000吨,即5x>=3000-200=1000.

    可能有人会问为什么是3次、2次、1次,而不是3次、一次,同样按照上面的分析,你可以得出3次、1次的情况最多剩余400吨。

    5x+3y>=2000

    5x>=1000

    求x+y的最大值?


本文转自啊汉博客园博客,原文链接:http://www.cnblogs.com/hlxs/archive/2011/06/02/2068366.html

《火车运煤问题》分析相关推荐

  1. 由火车运煤问题想到的

    Technorati 标签: 面试题, 火车运煤 本文版权所有,转载请注明出处和作者联系方式. 作者:孙华明 联系方式: wormsun at gmail.com 今天在酷壳网站上看到一道面试题--火 ...

  2. 面试题:火车运煤问题

    面试题:火车运煤问题 来源:http://www.xymyeah.com/165.html 你是山西的一个煤老板,你在矿区开采了有3000吨煤需要运送到市场上去卖,从你的矿区到市场有1000公里,你手 ...

  3. 关于火车运煤的一些想法

    火车运煤也是个经典的问题了.它的定义如下: 你是山西的一个煤老板,你在矿区开采了有3000吨煤需要运送到市场上去卖,从你的矿区到市场有1000公里,你手里有一列烧煤的火车,这个火车最多只能装1000吨 ...

  4. 火车运煤问题 - 增加一个简单算法实现

    火车运煤问题 你是山西的一个煤老板,你在矿区开采了有3000吨煤需要运送到市场上去卖,从你的矿区到市场有1000公里,你手里有一列烧煤的火车,这个火车最多只能装1000吨煤,且其能耗比较大--每一公里 ...

  5. 几个程序员面试题:火车运煤问题、赛马问题

    火车运煤 这个可能是一个比较经典的智力题了,和以前的那个<赛马问题>很相似,其题目如下: 你是山西的一个煤老板,你在矿区开采了有3000吨煤需要运送到市场上去卖,从你的矿区到市场有1000 ...

  6. 也谈《火车运煤》问题

    今日在酷壳看到一篇比较经典的<火车运煤>的智力题 你是山西的一个煤老板,你在矿区开采了有3000吨煤需要运送到市场上去卖,从你的矿区到市场有1000公里,你手里有一列烧煤的火车,这个火车最 ...

  7. 经典智力题:火车运煤

    题目描写叙述例如以下: 你是一个煤老板.你在矿区开採了3000吨煤,须要运送到市场上去卖,从你的矿区到市场有1000公里.你手里有一列以煤为动力的火车.这个火车一次最多能运1000吨煤,火车每公里消耗 ...

  8. 【面试题】火车运煤问题

    原文链接在此http://coolshell.cn/articles/4429.html 自己的思路 感觉这一题有点像微软一道飞机题,最多几架飞机可以绕地球一圈 想的是利益最大化,第一次到1/3处,放 ...

  9. 火车运煤(骆驼运胡萝卜)问题的最优解

    题目来源,http://coolshell.cn/articles/4429.html, 原始题目是这样的,你是山西的一个煤老板,你在矿区开采了有3000吨煤需要运送到市场上去卖,从你的矿区到市场有1 ...

最新文章

  1. php 为啥报错,php Soap 报错 求大神帮忙看看为什么
  2. python开发好学吗-python难学吗
  3. Asp.net(C#)动态生成表格中的按钮和事件响应
  4. 幽灵交易策略_幽灵交易者策略(附源代码)
  5. Android ABI
  6. C#服务器编程:WebService、Ajax与回调函数(一)
  7. 不属于python数据类型的是_Python不支持的数据类型有( )。
  8. NLOPT ros下的使用
  9. 韩顺平php视频笔记79 80 错误和异常处理的机制 错误处理器 错误触发器
  10. struts2 mysql配置文件路径_Struts2(四)Struts2配置文件的配置
  11. 在线CSV转HTMLTable工具
  12. 《解析几何》吕林根,徐子道第四版 习题 1.4.7,1.4.8,1.4.9
  13. SharePoint 2013 添加Ribbon菜单
  14. java推箱子游戏源代码_java实现推箱子小游戏(附源码)
  15. 第一次在CSDN上写博客
  16. SVG 研究之路 - 再談 defs
  17. 黑龙江省牡丹江市谷歌高清卫星地图下载
  18. 2.Raspberrypi 3:树莓派开发板入门
  19. Studio 3T for MongoDB 破解无限使用脚本
  20. Vue前端项目-用户管理-条件搜索界面

热门文章

  1. 工业互联网+危化安全生产综合管理平台怎样建
  2. S2ANet(Align Deep Features for Oriented Object Detection)解读
  3. 华为OD机试 - 最短耗时(C++) | 附带编码思路 【2023】
  4. OpenGL ES教程VI之纹理贴图(原文对照)
  5. 我的世界服务器物品怎么上锁,我的世界怎么给箱子上锁_我的世界箱子上锁指令用法及解锁方法_玩游戏网...
  6. Unity 3D模型展示之模型高亮
  7. php socket 模拟post,用PHP的Socket编程模拟Post来提交数据 | 学步园
  8. ROG 570-E 主板问题:主板发出1长2短的滴滴声,黄灯常亮
  9. 微信的营销策略你了解多少?
  10. 文件不小心删除了怎么恢复?实用的两个小妙招