ภาพรวมปัญหา
หาตัวเลขสูงสุดที่สามารถแสดงได้บน 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