এই সমস্যায়, আমাদের একটি সংখ্যা দেওয়া থাকে এবং আমাদের সেই সংখ্যাগুলো পুরানো ফ্যাশনের মোবাইল কীবোর্ডে টাইপ করে যে সব শব্দ তৈরি করা যায়, সেগুলো প্রিন্ট করতে হবে।
আমরা আজকে যে QWERTY কীবোর্ড ব্যবহার করি, সেটির সাথে আমরা খুব ভালোভাবে পরিচিত। কিন্তু QWERTY কীপ্যাডের আবিষ্কারের আগে, ফোনগুলিতে ১২ বাটনের কীপ্যাড থাকতো যেখানে প্রতিটি বাটনে অক্ষর ও সংখ্যা উভয়ই থাকত। যেমন, কীপ্যাডের ৬ নম্বর বাটনে "MNO" অক্ষরগুলো থাকতো, যeket একবার, দুবার বা তিনবার চাপা দিলে টাইপ হতো।
কীপ্যাডটি এখানে দেখানো হলো:
| ১ | ২ ABC | ৩ DEF |
| ৪ GHI | ৫ JKL | ৬ MNO |
| ৭ PQRS | ৮ TUV | ৯ WXYZ |
| * | ০ | # |
এই কীপ্যাডেও সব শব্দ উপস্থিত থাকে এবং ব্যবহারকারী সেগুলো টাইপ করতে পারে। তাই এই সমস্যায়, আমরা দেওয়া সংখ্যা সিকোয়েন্স ব্যবহার করে তৈরি হতে পারে এমন সব সম্ভাব্য শব্দ প্রিন্ট করব।
উদাহরণ
ইনপুট: 687 আউটপুট: MTP, MTQ, MTR, MTS, MUP, MUQ, MUR, MUS, MVP, MVQ, MVR, MVS, NTP, NTQ, NTR, NTS, NUP, NUQ, NUR, NUS, NVP, NVQ, NVR, NVS, OTP, OTQ, OTR, OTS, OUP, OUQ, OUR, OUS, OVP, OVQ, OVR, OVS
এই সমস্যাটি সমাধান করতে, উপরের উদাহরণে যে প্যাটার্ন তৈরি হয়েছে তা দেখা যাক। প্রতিটি বাটনের নিজস্ব সংশ্লিষ্ট অক্ষর থাকে এবং টাইপ করার সময় সেগুলো ব্যবহার করতে হবে। তাই প্রতিটি সংখ্যার জন্য সর্বোচ্চ ৪টি অপশন থাকে (৭ এবং ৯ এর ক্ষেত্রে)। এটি রিকার্শন ব্যবহার করে সমাধান করা যায়।
C++ প্রোগ্রাম
#include <iostream> #include <string.h> using namespace std; const char keypad[10][5] = {"", "", "abc", "def", "ghi", "jkl", "mno", "pqrs", "tuv", "wxyz"}; void printWords(int number[], int curr_digit, char output[], int n){ int i; if (curr_digit == n){ cout<<output<<" "; return ; } for (i=0; i<strlen(keypad[number[curr_digit]]); i++){ output[curr_digit] = keypad[number[curr_digit]][i]; printWords(number, curr_digit+1, output, n); if (number[curr_digit] == 0 || number[curr_digit] == 1) return; } } int main(void){ int number[] = {6,8,7}; cout<<"The output character formed is : \n"; int n = sizeof(number)/sizeof(number[0]); char result[n+1]; result[n] ='\0'; printWords(number, 0, result, n); return 0; }আউটপুট
তैयার করা ক্যারেক্টারগুলো হলো:
mtp mtq mtr mts mup muq mur mus mvp mvq mvr mvs ntp ntq ntr nts nup nuq nur nus nvp nvq nvr nvs otp otq otr ots oup ouq our ous ovp ovq ovr ovs