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

ตัวเลขสูงสุดที่แสดงบน Seven Segment Display ได้จาก N เซกเมนต์ใน C++


ภาพรวมปัญหา

หาตัวเลขสูงสุดที่สามารถแสดงได้บน Seven Segment Display โดยใช้เซกเมนต์ทั้งหมด N ตัว

ตัวอย่าง

Input: N = 5
Output: 71
Explanation: 7 ใช้ 3 เซกเมนต์, 1 ใช้ 2 เซกเมนต์ รวม 5

Input: N = 6
Output: 111
Explanation: 1 ใช้ 2 เซกเมนต์ ตัวละ 3 ตัว รวม 6

แนวทางแก้ปัญหา

  • กรณี N = 0 หรือ 1: ไม่สามารถแสดงตัวเลขได้
  • N เป็นคี่: ใช้ตัวเลข 7 (ใช้ 3 เซกเมนต์ น้อยที่สุดในกลุ่มคี่) เป็นหลักสำคัญ แล้วเรียกซ้ำด้วย N-3
  • N เป็นคู่: ใช้ตัวเลข 1 (ใช้ 2 เซกเมนต์ น้อยที่สุดในกลุ่มคู่) เป็นหลักสำคัญ แล้วเรียกซ้ำด้วย N-2

ตัวอย่างโค้ด C++

#include <iostream>
using namespace std;

void MaxNumber(int N) {
    if (N == 1 || N == 0) return;
    
    if (N % 2 == 0) {
        cout << "1";
        MaxNumber(N - 2);
    } else {
        cout << "7";
        MaxNumber(N - 3);
    }
}

int main() {
    int N = 5;
    MaxNumber(N);
    return 0;
}

ผลลัพธ์

71