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

Số tiền tối đa rút được trong 2 bước trong C

Cho 2 két sắt L1 (A coins) và L2 (B coins). Mỗi lần rút tiền từ két nào, két đó sẽ được nạp lại với số coins ít hơn 1. Chỉ được rút 2 lần. Tối đa hóa số tiền rút được.

Ví dụ

Đầu vào - L1 = 10, L2 = 11

Đầu ra - Tiền tối đa: 21

Giải thích - Bước 1: Rút 11 từ L2 → L2 còn 10. Bước 2: Cả 2 đều 10 → rút thêm 10. Tổng = 21.

Đầu vào - L1 = 5, L2 = 5

Đầu ra - Tiền tối đa: 10

Giải thích - Bước 1: Rút 5 từ L1 → L1 còn 4. Bước 2: Rút 5 từ L2. Tổng = 10.

Phương pháp

  • Hàm maxMoney(int A, int B)
  • Lần 1: rút từ két nhiều hơn (money = max(A,B))
  • Giảm két đó đi 1
  • Lần 2: lại rút từ két nhiều hơn (money += max(A,B))
  • Trả về money

Chương trình mẫu

#include <stdio.h>

int maxMoney(int A, int B) {
    int money = (A > B) ? A : B;
    
    if (money == A)
        A--;
    else
        B--;
    
    money += (A > B) ? A : B;
    return money;
}

int main() {
    int L1 = 8, L2 = 9;
    printf("Tiền tối đa rút 2 bước: %d", maxMoney(L1, L2));
    return 0;
}

Kết quả

Tiền tối đa rút 2 bước: 17

Giải thích: 9 + 8 = 17