查找完成所有任务所需最短时间的 C++ 代码
假设我们有一个包含 n 个元素的数组 A,以及另外两个数组 k 和 x。第 i 个任务需要 A[i] 时间才能完成。给定的 A 以非递减方式排序。Amal 最多可以完成 k 个任务,并且每个任务花费 x 个单位时间而不是 A[i]。(x < 所有 A[i] 的最小值)。我们必须找到完成 Amal 任务所需的最小时间。Amal 无法同时执行多个任务。
因此,如果输入类似于 A = [3, 6, 7, 10];k = 2;x = 2,则输出将为 13,因为最佳选择是完成第三和第四个任务,每个任务花费 x = 2 的时间而不是 A[2] 和 A[3]。然后答案是 3 + 6 + 2 + 2 = 13。
步骤
为了解决这个问题,我们将遵循以下步骤:
x := k * x n := size of A for initialize i := 0, when i < n - k, update (increase i by 1), do: t := A[i] x := x + t return x
示例
让我们看看下面的实现,以便更好地理解:
#include <bits/stdc++.h>
using namespace std;
int solve(vector<int> A, int k, int x){
x = k * x;
int n = A.size();
for (int i = 0; i < n - k; i++){
int t = A[i];
x += t;
}
return x;
}
int main(){
vector<int> A = { 3, 6, 7, 10 };
int k = 2;
int x = 2;
cout << solve(A, k, x) << endl;
}输入
{ 3, 6, 7, 10 }, 2, 2输出
13
广告
数据结构
网络
关系数据库管理系统 (RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP