Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

C++에서 전화번호에서 가능한 모든 단어 인쇄


이 문제에서는 숫자가 주어지며 구식 모바일 키보드에서 해당 단어를 눌러 형성할 수 있는 모든 단어를 인쇄해야 합니다.

우리는 오늘날 우리가 사용하는 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