站外题求助
  • 板块题目总版
  • 楼主EllaSun2009
  • 当前回复2
  • 已保存回复2
  • 发布时间2023/1/13 17:39
  • 上次更新2023/10/24 04:24:36
查看原帖
站外题求助
755314
EllaSun2009楼主2023/1/13 17:39

一辆重型卡车欲穿过 10001000 公里的沙漠,卡车耗汽油为11 升/公里,卡车总载油能力为 500500 公升。显然卡车装一次油是过不了沙漠的。因此司机必须设法在沿途建立若干个贮油点,使卡车能顺利穿过沙漠。试问司机如怎样建立这些贮油点?每一贮油点应存储多少汽油,才能使卡车以消耗最少汽油的代价通过沙漠?

编程计算及打印建立的贮油点序号,各贮油点距沙漠边沿出发的距离以及存油量。格式如下:

No. Distance(k.m.) Oil(litre)

1 ×× ××

2 ×× ××

… …… ……

输出包括若干行,每行表示一个贮油点的信息,第1个整数是贮油点编号,第 22 个实数是贮油点距出发点的距离,第 33 个实数是贮油点的存油量。每个数据之间用一个空格隔开,实数保留 22 位小数。

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, 大佬们帮帮我

2023/1/13 17:39
加载中...