此代码仅在按升序排列的一段时间内有效!
我得到了错误的答案,因为给出了最初的时间,并且预计将不进行排序
我正在尝试编写一段代码,以计算给定一组任务时间的总持续时间,其中可以在任何给定时间处理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。我遗漏了一些非常明显的东西,或者测试用例是错误的(我对此表示怀疑)
未对测试用例值进行排序。排序破坏了答案