< 返回我的博客

套路小迷糊 发表于 2018-05-13 22:24

众所周知一个木桶能够装多少水取决于其短板。譬如围成木桶的各个木板长度记录在一数值当中。如果已知木桶的底面积是 s 则可以得出圆柱体木桶最大的盛水量可以使用以下函数计算:

fn buckets_effect(s: f32, planks: &[f32]) -> f32 {
    let mut min_plank = planks[0];
    for i in planks {
        if min_plank > *i {
            min_plank = *i;
        }
    }
    \\ 此处没有考虑结果溢出的情况
    s * min_plank
}

现在假如桶底也需要用给出的木板拼接而成,您能求出木桶最大的盛水量吗?

要求

  1. 木板的宽度为 x
  2. 木板不能被锯开或纵向拼接来组成新木板;
  3. 只能组成圆柱体的水桶;圆台、圆锥或其他形状的水桶是被禁止的;
  4. 木板集合的类型使用切片或动态数组都是可以的,不过禁止使用定长数组;
  5. 木板的长度、宽度和最终结果均用 f32 类型表示,无需考虑结果溢出的情况。

原文链接下一题

评论区

写评论

还没有评论

1 共 0 条评论, 1 页