Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> सी प्रोग्रामिंग

स्ट्रिंग्स के सभी संयोजन जिनका उपयोग C/C++ में नंबर डायल करने के लिए किया जा सकता है?

किसी दिए गए नंबर के संबंध में, स्ट्रिंग्स के सभी संभावित संयोजनों को प्रदर्शित या प्रिंट करें जिन्हें निम्नलिखित पेसीफिकेशन की सहायता से किसी फ़ोन में दिए गए नंबर को डायल करने के लिए कार्यान्वित किया जा सकता है।

  • दिए गए फोन में, हम डायल कर सकते हैं,

  • 2 ए या बी या सी लागू करना,

  • 3 डी या ई या एफ को लागू करना,

  • ……………………….

  • 8 T या U या V को लागू करना,

  • 9 W या X या Y या Z को लागू करना,

  • 1 केवल 1 लागू कर रहा है

  • 0 लागू करना 0.

उदाहरण के लिए यदि 89, दिया गया फ़ोन नंबर है, तो प्रोग्राम को प्रिंट करना चाहिए

TW, TX, TY, TZ, UW, UX, UY, UZ, VW, 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 को इनपुट संख्या में अंकों की संख्या के रूप में माना जाता है।


  1. C++ में दी गई संख्या के अंकों का उपयोग करके बनाई जा सकने वाली अधिकतम संख्या ज्ञात कीजिए

    मान लीजिए कि हमारे पास कई n अंक हैं। हमें वह अधिकतम संख्या ज्ञात करनी है जो उस संख्या के अंकों के सभी अंकों का प्रयोग करके प्राप्त की जा सकती है। अतः यदि संख्या 339625 कहें तो अधिकतम संख्या 965332 हो सकती है। समस्या से, हम देख सकते हैं कि हम अंकों को गैर-बढ़ते क्रम में आसानी से सॉर्ट कर सकते हैं, फ

  1. C++ का उपयोग करके दिए गए नंबर तक जोड़ने वाले सभी संयोजन खोजें

    मान लीजिए कि हमारे पास एक सकारात्मक संख्या n है। हमें सकारात्मक संख्याओं के सभी संयोजनों को खोजना है, जो उस संख्या में जुड़ते हैं। यहां हम केवल संयोजन चाहते हैं, क्रमपरिवर्तन नहीं। मान n =4 के लिए, [1, 1, 1, 1], [1, 1, 2], [2, 2], [1, 3], [4] होंगे। हम इसे रिकर्सन का उपयोग करके हल करेंगे। हमारे पास

  1. फ़ंक्शन जिन्हें C++ में ओवरलोड नहीं किया जा सकता है

    C++ में हम फंक्शन्स को ओवरलोड कर सकते हैं। लेकिन कई बार ओवरलोडिंग नहीं होती है। इस खंड में, हम देखेंगे कि विभिन्न मामले क्या हैं, जिनमें हम कार्यों को अधिभारित नहीं कर सकते हैं। जब फ़ंक्शन सिग्नेचर समान होते हैं, केवल रिटर्न प्रकार अलग होता है, तो हम फ़ंक्शन को ओवरलोड नहीं कर सकते। int my_func(