如何计算重叠时间跨度的总持续时间

时间:2018-06-29 17:38:43

标签: c++ for-loop timespan date-arithmetic

此代码仅在按升序排列的一段时间内有效!

我得到了错误的答案,因为给出了最初的时间,并且预计将不进行排序

我正在尝试编写一段代码,以计算给定一组任务时间的总持续时间,其中可以在任何给定时间处理w个任务。如果正在进行两项任务,其中一项完成,那么另一项将立即开始。

为了提供一些背景信息,时间位于下面的排序数组中;

int times[] = {2,2,3,4}; //short array for example

int n = sizeof(times) / sizeof(times[0]);
int w = 2;  //number of tasks that can be done simultatenously
int total_time = 0;

我要使用的方法是对数组中的所有wth次求和。因此,在此示例中,总时间应为第二个和第四个值(2 + 4)。为此,我运行了一个for循环。

int main()
{   
    for (int i = n-1; i >= 0; i -= w)
    {
        //std::cout << "At index " << i << " is value " << myarray[i] << endl;
        total_time += myarray[i];

    }
    std::cout << total_time << endl;
    std::cin.get();
}

如果w = 3,则该示例中的结果应该相同

当w> n时,我只返回最后一个值,因为如果所有任务同时完成,则持续时间将只是数组中的最大值。我认为我的方法无法正常工作,因为它对某些数组得到了错误的结果。 谁能看到我要去哪里错了?

编辑:人们要求举一个例子,指出哪里出错了

int times[]{
125,
500,
1000,
2500,
5000,
10000,
15625,
25000,
50000,
62500,
78125,
78125,
100000,
125000,
156250,
500000,
781250,
5000000,
6250000,
6250000
};

w = 5;
int n = sizeof(times) / sizeof(times[0]);

为此,答案是6515625。我得到6473750。我遗漏了一些非常明显的东西,或者测试用例是错误的(我对此表示怀疑)

未对测试用例值进行排序。排序破坏了答案

0 个答案:

没有答案
相关问题