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

Số lớn nhất hiển thị trên màn hình 7 đoạn với N đoạn LED trong C++

Cho N đoạn LED. Tìm số nguyên lớn nhất có thể hiển thị trên màn hình 7 đoạn (seven-segment display) sử dụng đúng N đoạn. Mỗi chữ số tiêu tốn số đoạn sau:

  • 0: 6 đoạn, 1: 2 đoạn, 2: 5 đoạn, 3: 5 đoạn, 4: 4 đoạn
  • 5: 5 đoạn, 6: 6 đoạn, 7: 3 đoạn, 8: 7 đoạn, 9: 6 đoạn

Ví dụ

Input: N = 5 → Output: 71 (7 dùng 3 đoạn, 1 dùng 2 đoạn)
Input: N = 6 → Output: 111 (ba chữ số 1, mỗi số 2 đoạn)

Chiến lược tham lam

  • Để số lớn nhất → cần nhiều chữ số nhất có thể (độ dài lớn nhất) → ưu tiên chữ số dùng ít đoạn nhất.
  • Chữ số dùng ít đoạn nhất là 1 (2 đoạn).
  • Tuy nhiên, nếu N lẻ, không thể chỉ dùng chữ số 1 (vì 2 * k luôn chẵn). Cần dùng một chữ số dùng số đoạn lẻ → 7 (3 đoạn) là lựa chọn tốt nhất (lớn nhất trong các số dùng 3,5 đoạn).

Quy tắc:

  • N chẵn: toàn bộ là chữ số 1.
  • N lẻ: chữ số đầu tiên là 7, các chữ số còn lại là 1.

Chương trình C++ (Đệ quy)

#include <iostream>
using namespace std;

void MaxNumber(int N) {
    if (N == 0 || N == 1) return; // Không hiển thị được số nào
    if (N % 2 == 0) {
        cout << '1';
        MaxNumber(N - 2);
    } else {
        cout << '7';
        MaxNumber(N - 3);
    }
}

int main() {
    int N = 5;
    MaxNumber(N); // Output: 71
    return 0;
}

Kết quả

71