火车运煤问题
来源:互联网 发布:美工设计流程规范 编辑:程序博客网 时间:2024/04/29 03:06
火车运煤问题
- 刚面试问到这个题,可一直没有为此类问题准备,差点就回答不出来了
题目内容
- 你是山西的一个煤老板,你在矿区开采了有3000吨煤需要运送到市场上去卖,从你的矿区到市场有1000公里,你手里有一列烧煤的火车,这个火车最多只能装1000吨煤,且其能耗比较大——每一公里需要耗一吨煤。请问,作为一个懂编程的煤老板的你,你会怎么运送才能运最多的煤到集市?
分析
- 很显然每次走全程的话是无法到达终点的,更别说剩余部分煤。必然把煤全部运到中间某点,然后再继续运
- 假设第一次把煤全部运输到中间某点A,距离为x,那么消耗的煤的数量为5x,因为要往返两次,再单程一次把剩下的1000吨运往A点。
- 如果A点剩余煤量3000-5x大于2000,那么下一次假设从A运输到B,距离为y,消耗的煤的数量同样是5y。
- 如果A点剩余煤量小于2000,那么从A到B只需往返一次,再单程一次,消耗煤的数量为3y。
- 由此可见,从一点到另外一点距离为s,中途不折返,如果初始煤量在3000~2000之间,需要消耗5s吨煤
- 同理得到,s距离不折返初始煤量在2000~1000之间,需要消耗3s吨煤
- s距离不折返初始煤量在1000~0之间,需要消耗s吨煤
- 那么最终的策略为每次选择单位消耗最小的方式运输,第一次消耗5x,第二次消耗3y,第三次消耗z。满足第一次消耗之后剩余2000吨,第二次消耗之后剩余1000吨
结果
- x=200。转为单位消耗3的方式运输,y=333。转为单位消耗1的方式运输,z=(1000-x-y)= 467。剩余533吨煤
- 如果换一种思路,要求n1000吨煤最多可以运输多远,那么有n=1时为10001,n=2时为1000(1+1/3)。继续下去得到传输距离为1000(1+1/3+1/5+...+1/(2*n-1))。级数不收敛,表明只要煤足够多,能用运输到足够远
4 5
- 火车运煤问题
- 火车运煤问题
- 火车运煤问题
- 火车运煤问题
- 火车运煤问题
- 火车运煤问题
- 火车运煤问题
- 火车运煤问题
- 火车运煤问题
- 火车运煤问题
- 《火车运煤问题》分析
- 火车运煤问题分析
- 火车运煤问题分析
- 面试题:火车运煤问题
- 面试题:火车运煤问题
- 面试题:火车运煤问题
- 也谈《火车运煤》问题
- 【面试题】:火车运煤问题
- UIView
- WIFI密码 高手眼里就是个渣
- POJ-3068-"Shortest" pair of paths
- 黑马程序员——Java基础__多线程(上)
- XDOJ1036--神奇的盒子
- 火车运煤问题
- 【马云】宁可公司倒闭,也要辞退负面的员工 【转】
- ios SQLite 终端下的使用
- S3C6410启动模式介绍
- TTS插件只接受31个字符输入,为何?--找到答案
- Bochs + GDB 源码级调试C语言内核
- 浅谈android的selector背景选择器
- 黑马程序员——Java基础__多线程(下)
- 第170天