กำหนดภารกิจคือค้นหาจำนวนสูงสุดที่สามารถแสดงได้โดยใช้ N เซ็กเมนต์บนการแสดงจำนวนมดของการแสดงเซ็กเมนต์เจ็ดส่วน
ตอนนี้มาทำความเข้าใจสิ่งที่เราต้องทำโดยใช้ตัวอย่าง -
ป้อนข้อมูล − N=5
ผลผลิต − 71
คำอธิบาย − ตัวเลขที่ใหญ่ที่สุดจะแสดงดังต่อไปนี้บนจอแสดงผลเจ็ดส่วน −

ป้อนข้อมูล − N=6
ผลผลิต − 111

แนวทางที่ใช้ในโปรแกรมด้านล่างดังนี้
-
สถานการณ์ต่อไปนี้สามารถแบ่งออกเป็น 3 กรณี -
-
กรณีที่ 1 −
หาก N เป็น 0 หรือ 1 จะไม่สามารถแสดงตัวเลขใดๆ ได้
-
กรณีที่ 2 −
ถ้า N เป็นเลขคี่ จากนั้นตัวเลขที่สามารถแสดงด้วยเลขคี่ของเซ็กเมนต์คือ 2, 3, 5, 7 และ 8 โดยที่ 7 ใช้จำนวนเซ็กเมนต์น้อยที่สุดนั่นคือ 3 ดังนั้น 7 เป็นตัวเลขที่สำคัญที่สุดในกรณีนี้
-
กรณีที่ 3 −
ถ้า N เป็นคู่ จากนั้นตัวเลขที่สามารถแสดงด้วยเลขคี่ของเซ็กเมนต์ได้คือ 0, 1, 4, 6, 9 และ 8 โดยที่ 1 มีจำนวนเซ็กเมนต์น้อยที่สุดนั่นคือ 2 ดังนั้น 1 จึงเป็นตัวเลขที่สำคัญที่สุดในกรณีนี้ .
-
-
ในฟังก์ชัน MaxNumber() ให้ตรวจสอบเงื่อนไขพื้นฐานก่อนโดยใช้
ถ้า (N ==1 || N ==0)
-
จากนั้นใช้คำสั่ง if อื่น ตรวจสอบว่า N เป็นคู่หรือไม่ ถ้าใช่ ให้พิมพ์ “1” เนื่องจากเป็นตัวเลขที่สำคัญที่สุดในกรณีคู่ และเรียก MaxNumber(N - 2) เนื่องจากมีการใช้ 2 เซ็กเมนต์ที่นี่
-
ใช้คำสั่ง if อื่นเพื่อตรวจสอบว่า N เป็นเลขคี่หรือไม่ หากเป็นเช่นนั้น ให้พิมพ์ “7” เนื่องจากเป็นตัวเลขที่สำคัญที่สุดในกรณีคี่และเรียก MaxNumber(N - 3) เนื่องจากมีการใช้ 3 ส่วนที่นี่
ตัวอย่าง
#include <iostream>
using namespace std;
void MaxNumber(int N){
//Condition to check base case
if (N == 1 || N == 0){
return;
}
//If the number is even
if (N % 2 == 0){
cout << "1";
MaxNumber(N - 2);
}
//If the number is odd
else if (N % 2 == 1){
cout << "7";
MaxNumber(N - 3);
}
}
//Main function
int main(){
int N;
N = 5;
MaxNumber(N);
return 0;
} ผลลัพธ์
หากเราเรียกใช้โค้ดข้างต้น เราจะได้ผลลัพธ์ดังต่อไปนี้ -
71