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

C/C++에서 번호를 다이얼하는 데 사용할 수 있는 모든 문자열 조합은 무엇입니까?

<시간/>

주어진 번호와 관련하여 다음 사양의 도움으로 전화기에서 주어진 번호로 전화를 걸기 위해 구현할 수 있는 가능한 모든 문자열 조합을 표시하거나 인쇄하십시오.

  • 주어진 전화로 전화를 걸 수 있습니다.

  • 2 A 또는 B 또는 C 구현,

  • 3 D 또는 E 또는 F 구현,

  • ……………….

  • 8 T 또는 U 또는 V 구현,

  • 9 W 또는 X 또는 Y 또는 Z 구현,

  • 1개만 구현

  • 0 구현 0.

예를 들어 89가 주어진 전화번호인 경우 프로그램은 다음과 같이 인쇄해야 합니다.

TW,TX,TY,TZ,UW,UX,UY,UZ,폭스바겐,VX,VY,VZ

#include <stdio.h>
#include <string.h>
// TableHash[i] stores all characters that correspond to digit i in phone const char TableHash[10][5] =
{"", "", "WXYZ", "TUV", "PQRS", "MNO", "GHI", "GHI", "DEF", "ABC"};
// A recursive function to display or print all possible words that can be obtained by implementing input number1[] of size n1.
The output words are one by one stored in output1[] void UtilWordsPrint(int number1[], int curr_digit1, char output1[], int n1) {
         // In the Base case, if current output word is prepared int i; if (curr_digit1 == n1) {
            printf("%s ",  
            output1); return ;
       }
   // We try all 3 possible characters for current digit in number1[]
   // and recur for remaining digits
   for (i=0; i<strlen(TableHash[number1[curr_digit1]]); i++) {
      output1[curr_digit1] =
      TableHash[number1[curr_digit1]][i];
      UtilWordsPrint(number1, curr_digit1+1, output1, n1);
      if (number1[curr_digit1] == 0 || number1[curr_digit1] == 1)
      return;
   }
}
// A wrapper over UtilWordsPrint(). It is able to create an output1 array and calls UtilWordsPrint() void printWords(int number1[], int n1) {
   char result1[n1+1];
   result1[n1] ='\0';
   UtilWordsPrint(number1, 0, result1, n1);
}
//Driver program int main(void) {
   int number1[] = {2, 3, 4};
   int n1 = sizeof(number1)/sizeof(number1[0]);
    printWords(number1, n1); return 0;
 }

출력

WTP WTQ WTR WTS WUP WUQ WUR WUS WVP WVQ WVR WVS XTP XTQ XTR XTS XUP XUQ XUR XUS XVP XVQ XVR XVS YTP YTQ YTR YTS YUP YUQ YUR YUS YVP YVQ YVR YVS ZTP ZTQ ZTR ZTS ZUP ZUQ ZUR ZUS ZVP ZVQ ZVR ZVS

시간 복잡도:위 코드 beO(4n)의 시간 복잡도에서 n은 입력 숫자의 자릿수로 처리됩니다.