Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

โค้ด C++ หาเวลาน้อยที่สุดในการทำภารกิจทั้งหมด

โจทย์: มีภารกิจ n อย่าง ใช้เวลา A[i] (เรียงไม่ลด) Amal ทำได้สูงสุด k ภารกิจ ใช้เวลา x ต่อภารกิจ (x < min(A)) หาเวลารวมน้อยที่สุด

Input: A=[3,6,7,10], k=2, x=2 → Output: 13 (ทำภารกิจที่ 3,4 ใช้เวลา 2+2 แทน 7+10)

ขั้นตอนแก้

x := k * x
for i := 0 to n-k-1:
    x += A[i]
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++) {
        x += A[i];
    }
    return x;
}
int main() {
    vector<int> A = {3,6,7,10};
    int k = 2, x = 2;
    cout << solve(A,k,x) << endl;
}

Input

{3,6,7,10}, 2, 2

Output

13