有一个建筑工地,还有很多工作要做。我们需要一定数量的工人来做。每个工人都有相同的工作能力,他们不能承受的工作量不能超过该限制。因此,对于给定数量的工程,所需的工人数为:


如果worksworkerCapacity的整数倍,则workers将是works / workerCapacity的简单除法。
如果works不是workerCapacity的整数倍,那么除法后,我们需要加1。例如。如果产能= 10,则100件作品需要10名工人,而101件作品需要11名工人。


这是我的实现:

public int getNumWorkers(int works) {
    int workers = works / workerCapacity;
    if (works % workerCapacity != 0) {
        workers++;
    }
    return workers;
}


我的问题是:我们可以将2-5行简化为仅一行吗?

最佳答案

是的你可以。在分隔之前添加workerCapacity-1,如下所示:

return (works+workerCapacity-1) / workerCapacity;


如果workerCapacityworks平均划分(即works % workerCapacity == 0),则添加workerCapacity-1太少了,无法更改答案。如果余数大于零,则添加workerCapacity-1将使除法结果加一。

09-28 01:50