关于火车运煤问题,跟大家讨论下.

ynwlgh 2013-05-15 01:22:02

/**************************************************************


你是山西的一个煤老板,你在矿区开采了有3000吨煤需要运送到市场上去卖,

从你的矿区到市场有1000公里,你手里有一列烧煤的火车,

这个火车最多只能装1000吨煤,且其能耗比较大——每一公里需要耗一吨煤。

请问,作为一个懂编程的煤老板的你,你会怎么运送才能运最多的煤到集市?


***************************************************************/


请大家自己想下答案,写在回贴中 .

网上有现成的标准答案. 但是我对那个答案有一些疑惑,到时候跟大家讨论下.


...全文
128 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
youyou1912 2013-05-17
  • 打赏
  • 举报
回复
貌似奥数问题. 貌似经典问题, 貌似有过讨论. 难点在怎么证明最优(还是数学问题). http://bbs.csdn.net/topics/370224880
nirvana_newbie 2013-05-15
  • 打赏
  • 举报
回复
首先想到最优解的两个特征: 1,火车肯定要从起点出发3次(因为每次最多运1000); 2,火车前两次回到起点要用完车上存煤(否则是浪费)。 初步方案:火车前两次都运到某点x,卸下1000-2x,然后用x煤回去,第三次到x点时,车上有1000-x,然后装上x点的煤,若3000-5x不超过1000,直接到终点,用3000-5x=1000的临界条件算得x=400,这也是火车到达终点所剩下的煤。 若3000-5x超过1000,此时与原问题类似,但初始煤变为3000-5x,路程变为1000-x,我们需要选择下一个存煤点,与x点距离y,然后在y点回头一次。 然后想到第三个特征: 3,火车回程要尽可能短。 使火车回头的原因是火车容量为1000,理想状况为火车每次出发都装满1000的煤,所以火车第三次到达x点时共有煤3000-5x=2000,求得x=200;火车第二次到达y点时站点有存煤1000-2y,火车有煤1000-y,共计2000-3y,理想状况为2000-3y=1000,y=333,火车到达终点剩下煤1000-(1000-x-y)=533。

64,644

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧