Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Tối đa số đá lấy từ ba đống theo quy tắc bằng C++

Mô tả bài toán

Ba đống đá a,b,c. Mỗi phép: lấy 1 từ đống 1 và 2 từ đống 2; hoặc 1 từ đống 2 và 2 từ đống 3. Tối đa hóa tổng số đá lấy được.

Ví dụ

a=3,b=4,c=5 → Output: 9. (Lấy 2 lần phép 2: lấy 2 từ đống2, 4 từ đống3 =6; rồi 1 lần phép 1: 1 từ đống1, 2 từ đống2 =3; tổng 9).

Thuật toán

Ưu tiên phép 2 (vì dùng đống 3). Số phép 2 tối đa = min(b, c/2). Sau đó phép 1 tối đa = min(a, (b - phép2)/2). Tổng đá = (phép1+phép2)*3.

Code C++

#include <bits/stdc++.h>
using namespace std;

int solve(int a, int b, int c) {
    int op2 = min(b, c/2);
    int op1 = min(a, (b - op2)/2);
    return (op1 + op2) * 3;
}

int main() {
    int a=3,b=4,c=5;
    cout << solve(a,b,c) << endl;
    return 0;
}

Đầu vào / Đầu ra

Input: 3, 4, 5

Output: 9