博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
煤火车问题
阅读量:6686 次
发布时间:2019-06-25

本文共 826 字,大约阅读时间需要 2 分钟。

煤火车问题

  • 刚面试问到这个题。可惜一直没有为此类问题准备,差点就回答出来了

题目内容

  • 你是山西的一个煤老板。你在矿区开採了有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))。级数不收敛,表明仅仅要煤足够多。能用运输到足够远

  

  

转载请注明作者:Focustc,博客地址为 ,原文链接为

  

  
你可能感兴趣的文章
DB2-内存的使用
查看>>
第四、五章解决队列和串的编程问题
查看>>
包失效,无法编译
查看>>
linux 配置全用户的环境变量,profile.d文件的作用
查看>>
linux邮件服务器配置
查看>>
HTML5学习笔记(二)——表单1
查看>>
docker笔记
查看>>
三层交换机与路由器的相关配置
查看>>
html表单笔记
查看>>
nginx负载均衡的5种策略
查看>>
MyBatis学习总结(三)——优化MyBatis配置文件中的配置
查看>>
《Java程序员的基本修养》读书笔记之内存回收
查看>>
鸟哥私房菜重温6
查看>>
适用于ASP等环境的JS日期选择控件
查看>>
CU3ER非常Cool的3D效果的Flash Slider
查看>>
Linux常用命令
查看>>
10、《每天5分钟玩转Docker容器技术》学习-Docker命令之本地镜像管理
查看>>
shell脚本:输出昨天的日期
查看>>
css优先级详解
查看>>
小白第三天
查看>>