一辆重型卡车欲穿过 1000 公里的沙漠,卡车耗汽油为1 升/公里,卡车总载油能力为 500 公升。显然卡车装一次油是过不了沙漠的。因此司机必须设法在沿途建立若干个贮油点,使卡车能顺利穿过沙漠。试问司机如怎样建立这些贮油点?每一贮油点应存储多少汽油,才能使卡车以消耗最少汽油的代价通过沙漠?
编程计算及打印建立的贮油点序号,各贮油点距沙漠边沿出发的距离以及存油量。格式如下:
No. Distance(k.m.) Oil(litre)
1 ×× ××
2 ×× ××
… …… ……
输出包括若干行,每行表示一个贮油点的信息,第1个整数是贮油点编号,第 2 个实数是贮油点距出发点的距离,第 3 个实数是贮油点的存油量。每个数据之间用一个空格隔开,实数保留 2 位小数。
WA 代码
#include <bits/stdc++.h>
using namespace std;
float d[10], o[10];
int main(){
int i = 0, k = 1;
d[0] = o[0] = 0.0;
d[1] = o[1] = 500.0;
while(d[k] <= 1000)
{
++ k;
d[k] = d[k - 1] + 500.0 / (2 * k - 1);
o[k] = k * 500.0;
}
d[k] = 1000.0, o[k] = (1000.0 - d[k - 1]) * (2 * k - 1) + o[k - 1];
cout << "No. Distance(k.m.) Oil(litre)\n";
for(k; k >= 0; -- k) printf("%d %.2f %.2f\n", ++ i, 1000.0 - d[k], o[k]);
return 0;
}
思路和课上讲的一样,但就是会 WA, 大佬们帮帮我 。