卡车穿越沙漠问题
2013-05-18 01:18
369 查看
一辆重型卡车欲穿过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;
}
思路:设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;
}
相关文章推荐
- 卡车过沙漠问题
- 算法题15 穿越沙漠问题,飞机加油问题
- 穿越沙漠问题
- 穿越沙漠的问题
- 穿越沙漠问题
- 穿越沙漠问题,飞机加油问题
- SIP通过BGW穿越防火墙的问题
- Fzu_1076 穿越沙漠
- 一个商人骑一头驴要穿越1000公里长的沙漠,去卖3000根胡萝卜。已知驴一次性可驮1000根胡萝卜,但每走1公里又要吃掉1根胡萝卜。问:商人最多可卖出多少胡萝卜?
- 一个商人骑一头驴要穿越1000公里长的沙漠,去卖3000根胡萝卜。已知驴一次性可驮1000根胡萝卜
- SIP穿越NAT解析问题探讨
- 一道背包问题 BunOJ 29376 沙漠之旅
- 【数学建模】FZU 1076 穿越沙漠
- 一个商人骑一头驴要穿越1000公里长的沙漠,去卖3000根胡萝卜。已知驴一次性可驮1000根胡萝卜,但每走1公里又要吃掉1根胡萝卜。
- BIT 1005 穿越沙漠
- 吐血、、、关于小Q的穿越问题
- 穿越沙漠 FZU 1076 (数学)
- 卡车更新问题
- SDAU 练习三 1008 穿越大魔王的幽谷的问题
- 卡车更新问题