이 문제에서는 숫자가 주어지며 구식 모바일 키보드에서 해당 단어를 눌러 형성할 수 있는 모든 단어를 인쇄해야 합니다.
우리는 오늘날 우리가 사용하는 QWERTY 키보드 스타일에 매우 익숙합니다. 그러나 QWERTY 키패드 전화기가 발명되기 전에는 12개의 버튼이 있는 키패드가 장착되었으며 각 버튼에는 단어와 숫자가 모두 포함되어 있습니다. 키패드의 단어 6에는 키를 한 번, 두 번 또는 세 번 클릭하면 입력되는 "MNO"라는 단어가 포함됩니다.
키패드는 이렇게 생겼습니다 -
1 | 2 알파벳 | 3 방어력 |
4 기아 | 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 네임스페이스 std;const char 키패드 사용[10][5] ={"", "", "abc", "def", "ghi", "jkl ", "mno","pqrs", "tuv", "wxyz"}; 무효 printWords(int number[], int curr_digit, char 출력[], int n){ int i; if (curr_digit ==n){ cout<<출력<<" "; 반품; } for (i=0; i 출력
형성된 출력 문자는 -
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 ouv otsqoup