查詢完成所有任務所需最短時間的 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