С обзиром на број и штампање све могуће комбинације жице које се могу користити за бирање датог броја у телефону са следећим спецификацијама. У датом телефону можемо назвати 2 коришћењем А или Б или Ц3 користећи Д или Е или Ф ................... 8 Коришћење Т или Кс или У 1 користећи само 1 0 користећи 0. На пример, ако је дат телефонски број, програм треба да штампа ад ае а ае аф бд бити бф цф цф
Идеја је да складиштите цифру на ликове који мапирају на хасх мапи. Карта чува све знакове који се могу користити цифром. Сваки могући карактер стављамо за тренутну цифру и рецур за преостале цифре.
ц форматирани стринг
Алгоритам:
- Креирајте хасх мапу помоћу тастера као цифара од 0 до 9 и вредности као скуп знакова повезаних са сваком цифром.
- Дефинишите рекурзивну функцију принтСТРИНГС-а које траје четири аргументације:
а. пхно - телефонски телефонски број
б. Ја - индекс тренутног цифара који се обрађује
ц. ХМ - Хасх мапа цифре до скупова знакова
д. Стр - Досадашњи низ знакова - Унутар функције штампања:
а. Проверите да ли сам стигао до краја телефонског броја. Ако да, штампате генерирани низ и вратите се.
б. Набавите сет ликова повезаних са тренутном цифром са мапе Хасх.
ц. Понавља се преко сваког лика у сету и:
Ја. Додајте карактер у стр.
ИИ. Рекурзивно називајте функцију штампања за следећу цифру.
ИИИ. Извадите последњи знак из Стринг Стр. - Дефинишите функцију принтстрингфорнумбер који узима један аргумент:
а. пхно - телефонски телефонски број - Унутар функције принтстрингфорнумбер позива на функцију приноса са аргументима Пхно 0 хм и празан низ.
Испод је примена Јаве ове идеје.
Имплементација:
C++// C++ program for the above approach #include #include using namespace std; void printStrings(string phNo int i unordered_map<char string> hm string str) { if (i == phNo.length()) { cout << str << ' '; return; } string s = hm[phNo[i]]; for (int j = 0; j < s.length(); j++) { str.push_back(s[j]); printStrings(phNo i+1 hm str); str.pop_back(); } } void printStringForNumber(string phNo) { unordered_map<char string> hm = { {'2' 'ABC'} {'3' 'DEF'} {'4' 'GHI'} {'5' 'JKL'} {'6' 'MNO'} {'7' 'PQRS'} {'8' 'TUV'} {'9' 'WXYZ'} {'1' '1'} {'0' '0'} }; string str; printStrings(phNo 0 hm str); } int main() { printStringForNumber('23'); return 0; } // This code is contributed by codebraxnzt
Java // Java program to print all possible key strings // that can be used to dial a phone number. import java.util.HashMap; class ConvertToString { // A Recursive function to print all combinations // that can be used to dial a given number. // phNo ==> Given Phone Number // i ==> Current digit of phNo to be processed // hm ==> Stores characters that can be used to // to dial a digit. // str ==> Current output string static void printStrings(String phNo int i HashMap<Character String> hm StringBuilder str) { // If all digits are processed print output // string if (i == phNo.length()) { System.out.print(str + ' '); return; } // Get current digit of phNo and recur for all // characters that can be used to dial it. String s = hm.get(phNo.charAt(i)); for (int j = 0; j < s.length(); j++) { str.append(s.charAt(j)); printStrings(phNo i+1 hm str); str.deleteCharAt(str.length()-1); } } // Prints all possible combinations of strings that // can be used to dial c[]. static void printStringForNumber(String phNo) { // Create a HashMap HashMap<Character String> hm = new HashMap<Character String>(); // For every digit store characters that can // be used to dial it. hm.put('2' 'ABC'); hm.put('3' 'DEF'); hm.put('4' 'GHI'); hm.put('5' 'JKL'); hm.put('6' 'MNO'); hm.put('7' 'PQRS'); hm.put('8' 'TUV'); hm.put('9' 'WXYZ'); hm.put('1' '1'); hm.put('0' '0'); // Create a string to store a particular output // string StringBuilder str = new StringBuilder(); // Call recursive function printStrings(phNo 0 hm str); } // Driver code to test above methods public static void main(String args[]) { // Prints printStringForNumber('23'); } }
Python def print_strings(ph_no i hm s): if i == len(ph_no): print(s end=' ') return for c in hm[ph_no[i]]: print_strings(ph_no i+1 hm s+c) def print_string_for_number(ph_no): hm = { '2': 'ABC' '3': 'DEF' '4': 'GHI' '5': 'JKL' '6': 'MNO' '7': 'PQRS' '8': 'TUV' '9': 'WXYZ' '1': '1' '0': '0' } s = '' print_strings(ph_no 0 hm s) print_string_for_number('23')
C# using System; using System.Collections.Generic; class Program { static void printStrings(string phNo int i Dictionary<char string> hm string str) { if (i == phNo.Length) { Console.Write(str + ' '); return; } string s = hm[phNo[i]]; for (int j = 0; j < s.Length; j++) { str += s[j]; printStrings(phNo i+1 hm str); str = str.Remove(str.Length-1); } } static void printStringForNumber(string phNo) { Dictionary<char string> hm = new Dictionary<char string> { {'2' 'ABC'} {'3' 'DEF'} {'4' 'GHI'} {'5' 'JKL'} {'6' 'MNO'} {'7' 'PQRS'} {'8' 'TUV'} {'9' 'WXYZ'} {'1' '1'} {'0' '0'} }; string str = ''; printStrings(phNo 0 hm str); } static void Main(string[] args) { printStringForNumber('23'); } }
JavaScript function printStrings(phNo i hm s) { if (i === phNo.length) { console.log(s + ' '); return; } for (let j = 0; j < hm[phNo[i]].length; j++) { s += hm[phNo[i]][j]; printStrings(phNo i+1 hm s); s = s.slice(0 -1); } } function printStringForNumber(phNo) { let hm = { '2': 'ABC' '3': 'DEF' '4': 'GHI' '5': 'JKL' '6': 'MNO' '7': 'PQRS' '8': 'TUV' '9': 'WXYZ' '1': '1' '0': '0' }; let s = ''; printStrings(phNo 0 hm s); } printStringForNumber('23');
Излаз
AD AE AF BD BE BF CD CE CF
Временски сложеност: о (2 ^ н) Ево Н је дужина низа
Помоћни простор: О (н)
цсв фајл чита јава