กำหนดภารกิจคือค้นหาจำนวนสูงสุดที่สามารถแสดงได้โดยใช้ 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