卡车穿越沙漠问题
来源:互联网 发布:linux tmp 目录权限 编辑:程序博客网 时间:2024/04/28 17:11
一辆重型卡车欲穿过1000公里的沙漠,卡车耗油为1升每公里。卡车总载油量为500升。显然卡车装一次油是过不了沙漠的,因此司机需要设法在沿途建立几个加油点,(加油点的油也是由卡车从起始点运送过去的)试问,司机如何建立这些储油点,每一储油点需要存多少汽油,使得最后耗油总量最少(包括运油的耗油等等)。
思路:设a[i]为倒数第i+1个储油点与终点的距离;b[i]为倒数第i+1个储油点储油量。
首先应该明确的是,若要耗油最少:
1.卡车从一个站点到下一个站点再返回前一个站点的时候应该刚好耗完所带的油,所以每次从储油点带走的都是500升
2.卡车走的路程要最少,也就是说,尽量少走重复的路线。
3.考虑到每次带走的都是500升,所以,两站之间路上消耗的是500升的时候会走最少的重复的路。
这时候,已经知道每两站之间储油量的关系是前一站比后一站多500升,两站之间往返的路程为500公里。从第一站考虑的话是未知的,但最后一站已经很容易看出来,a[0]=500;b[0]=500;按照前面的关系可以依次计算出来与终点的距离与储油量。
先输出的是储油点的个数,然后是从起点开始的储油点与起点的距离及它的储油量。
#include<iostream>
#include<iomanip>using namespace std;
int main()
{
double a[100];
int b[100];
a[0]=500;
b[0]=500;
int i=0;
while(a[i]<=1000)
{
i++;
a[i]=500.0/(2.0*(i+1)-1.0)+a[i-1];
b[i]=500*(i+1);
}
cout<<i-1<<endl;
for(i=i-1;i>=0;i--)
cout<<setw(10)<<fixed<<setprecision(4)<<1000-a[i]<<" "<<b[i]<<endl;
}
- 卡车穿越沙漠问题
- 卡车过沙漠问题
- 1076穿越沙漠问题
- 穿越沙漠问题
- 穿越沙漠的问题
- 穿越沙漠问题
- 穿越沙漠问题
- 穿越沙漠
- 穿越沙漠
- 穿越沙漠
- 穿越沙漠问题,飞机加油问题
- 算法题15 穿越沙漠问题,飞机加油问题
- FOJ 1076 穿越沙漠
- FZU 1076 穿越沙漠
- Fzu_1076 穿越沙漠
- FOJ1076 BIT1005 穿越沙漠
- bit 穿越沙漠
- BIT 1005 穿越沙漠
- HDOJ 2030 汉字统计
- 翱翔的ABAP面试方式及问题
- 入门SAP FICO必学的几个基本概念
- 保存到相册以及写入document目录以及读取示例
- 2013北大校赛 13年5月12日 总结
- 卡车穿越沙漠问题
- rhel 6.2 x64 oracle 11g下 手工创建数据库
- Android开发:Android Studio的中文问题
- flex air 设置应用程序图标 - [Desktop - AIR]
- 并查集Union-Find Sets
- bash脚本学习之一:ubuntu系统bash.bashrc走读注释
- 与flash结缘
- [转载]sockaddr与sockaddr_in
- 如何将FLex AIR运行环境与AIR程序一起打包