Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> C++

C++ में सभी क्रमपरिवर्तनों को क्रमबद्ध (शब्दकोश) क्रम में प्रिंट करें

इस समस्या में, हमें लंबाई n की एक स्ट्रिंग दी जाती है और हमें स्ट्रिंग के वर्णों के सभी क्रमपरिवर्तनों को क्रमबद्ध क्रम में प्रिंट करना होता है।

समस्या को समझने के लिए एक उदाहरण लेते हैं:

इनपुट: 'एक्सवाईजेड'

आउटपुट: XYZ, XZY, YXZ, YZX, ZXY, ZYX।

यहां हमें सभी क्रमपरिवर्तन को लेक्सिकोग्राफिकल क्रम (वर्णानुक्रम में बढ़ते क्रम) में प्रिंट करना होगा।

इस समस्या को हल करने के लिए, हमें पहले सरणी को वर्णानुक्रम में बढ़ते क्रम में क्रमबद्ध करना होगा, क्रमबद्ध सरणी क्रमपरिवर्तन का पहला तत्व है। और फिर स्ट्रिंग का अगला उच्च क्रम क्रमपरिवर्तन उत्पन्न करें।

नीचे दिया गया कोड आपके लिए समाधान को और स्पष्ट कर देगा:

उदाहरण

#include<iostream>
#include<string.h>
using namespace std;
int compare(const void *a, const void * b){
   return ( *(char *)a - *(char *)b );
}
void swap(char* a, char* b) {
   char t = *a;
   *a = *b;
   *b = t;
}
int finduBound(char str[], char first, int l, int h) {
   int ubound = l;
   for (int i = l+1; i <= h; i++)
      if (str[i] > first && str[i] < str[ubound])
   ubound = i;
   return ubound;
}
void generatePermutaion ( char str[] ) {
   int size = strlen(str);
   qsort( str, size, sizeof( str[0] ), compare );
   bool isFinished = false;
   while ( ! isFinished ) {
      cout<<str<<"\t";
      int i;
      for ( i = size - 2; i >= 0; --i )
         if (str[i] < str[i+1])
            break;
         if ( i == -1 )
            isFinished = true;
      else {
         int ubound = finduBound( str, str[i], i + 1, size - 1 );
         swap( &str[i], &str[ubound] );
         qsort( str + i + 1, size - i - 1, sizeof(str[0]), compare );
      }
   }
}
int main() {
   char str[] = "NOPQ";
   cout<<"Permutation in Sorted order :\n";
   generatePermutaion(str);
   return 0;
}

आउटपुट

Permutation in Sorted order :
NOPQ NOQP NPOQ NPQO NQOP NQPO
ONPQ ONQP OPNQ OPQN OQNP
OQPN PNOQ PNQO PONQ POQN
PQNO PQON QNOP QNPO QONP
QOPN QPNO QPON

  1. सभी चक्रों को C++ में एक अप्रत्यक्ष ग्राफ में प्रिंट करें

    इस समस्या में, हमें एक अप्रत्यक्ष ग्राफ दिया जाता है और हमें ग्राफ में बनने वाले सभी चक्रों को प्रिंट करना होता है। अप्रत्यक्ष ग्राफ़ एक ग्राफ है जो एक साथ जुड़ा हुआ है। यूनिडायरेक्शनल ग्राफ के सभी किनारे द्विदिश हैं। इसे एक अप्रत्यक्ष नेटवर्क के रूप में भी जाना जाता है। साइकिल ग्राफ़ में डेटा संर

  1. C++ में क्रमबद्ध क्रम में बाइनरी ट्री स्तरों को प्रिंट करें

    इस समस्या में, हमें एक बाइनरी ट्री दिया जाता है और हमें सभी नोड्स को उनके मूल्यों के क्रमबद्ध क्रम में एक स्तर पर प्रिंट करना होता है। आइए अवधारणा को बेहतर ढंग से समझने के लिए एक उदाहरण लेते हैं, इनपुट - आउटपुट - 20 6 15 2 17 32 78 इस समस्या को हल करने के लिए, हमें पेड़ के प्रत्येक स्तर के क्र

  1. C++ में दी गई श्रेणी में सभी पैलिंड्रोम को प्रिंट करने का प्रोग्राम

    इस ट्यूटोरियल में, हम एक निश्चित सीमा में सभी पैलिंड्रोम को प्रिंट करने के कार्यक्रम पर चर्चा करेंगे। इसके लिए हमें गणितीय श्रेणी दी जाएगी जिसमें पैलिंड्रोम पाए जाते हैं। हमारा काम उस सीमा के सभी पैलिंड्रोम को ढूंढना और उसे वापस प्रिंट करना है। उदाहरण #include<iostream> using namespace std; /