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

พิมพ์คำที่เป็นไปได้ทั้งหมดจากหลักโทรศัพท์ในภาษา C++


ในปัญหานี้ เราได้รับตัวเลขและต้องพิมพ์คำทั้งหมดที่เกิดขึ้นจากการกดคำเหล่านั้นด้วยแป้นพิมพ์มือถือแบบเก่า

เราค่อนข้างคุ้นเคยกับรูปแบบแป้นพิมพ์ 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< 

ผลลัพธ์

อักขระเอาต์พุตที่สร้างคือ −

mtp mtq mtr mts mup muq mur mus mvp mvq mvr mvs ntp ntq ntr ntsnup nuq nur nus nvp nvq nvr nvs otp otq otr ots oup ovr ของเรา