ในปัญหานี้ เราได้รับตัวเลขและต้องพิมพ์คำทั้งหมดที่เกิดขึ้นจากการกดคำเหล่านั้นด้วยแป้นพิมพ์มือถือแบบเก่า
เราค่อนข้างคุ้นเคยกับรูปแบบแป้นพิมพ์ QWERTY ที่เราใช้อยู่ในปัจจุบัน แต่ก่อนการประดิษฐ์โทรศัพท์ปุ่มกดแบบ QWERTY มีการติดตั้งปุ่มกดแบบ 12 ปุ่ม และแต่ละปุ่มจะมีทั้งคำและตัวเลข เช่นเดียวกับคำ 6 บนแป้นพิมพ์จะมีคำว่า “MNO” ซึ่งจะถูกพิมพ์โดยคลิกที่ปุ่มหนึ่ง สองครั้ง หรือสามครั้ง
ปุ่มกดมีลักษณะดังนี้ −
1 | 2 ABC | 3 DEF |
4 GHI | 5 JKL | 6 MNO |
7 PQRS | 8 TUV | 9 WXYZ |
* | 0 | # |
ในคำหลักเหล่านี้ยังมีคำทั้งหมดอยู่และผู้ใช้สามารถพิมพ์ได้ ดังนั้นในปัญหานี้ เราจะพิมพ์คำที่เป็นไปได้ทั้งหมดที่สามารถสร้างได้โดยใช้ลำดับตัวเลขที่ให้มา
มาดูตัวอย่างเพื่อทำความเข้าใจปัญหากันดีกว่า −
อินพุต:687เอาต์พุต:MTP, MTQ, MTR, MTR, MUP, MUQ, MUR, MUS, MVP, MVQ, MVR, MVR, NTP, NTQ, NTR, NTR, NUP, NUQ, NUR, NUS, NVP, NVQ ,NVR, NVR, OTP, OTQ, OTR, OTR, OUP, OUQ, ของเรา, OUS, OVP, OVQ, OVR, OVR
ในการแก้ปัญหานี้เรามาดูรูปแบบที่ทำในตัวอย่างข้างต้นกัน แต่ละปุ่มมีอักขระที่เกี่ยวข้องกันและเราจะต้องใช้งานในขณะที่พิมพ์ ดังนั้น สำหรับแต่ละหมายเลข จะมีตัวเลือกสูงสุด 4 ตัวเลือก (ในกรณีของ 7 และ 9) สำหรับสิ่งนี้เราสามารถแก้ไขบนหลักแล้วใช้หลักและคำปลอมแปลง ซึ่งสามารถทำได้โดยใช้การเรียกซ้ำ
ให้โปรแกรมนำแนวคิดไปใช้งานโดยใช้การเรียกซ้ำ
ตัวอย่าง
#include#include using เนมสเปซ std;const char keypad[10][5] ={"", "", "abc", "def", "ghi", "jkl "," mno","pqrs", "tuv", "wxyz"}; เป็นโมฆะ printWords(int number[], int curr_digit, char output[], int n){ int i; if (curr_digit ==n){ cout<