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

C++ में वर्णों की पुनरावृत्ति के साथ सभी क्रमपरिवर्तन प्रिंट करें


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

विषय को बेहतर ढंग से समझने के लिए एक उदाहरण लेते हैं :

इनपुट - XY

आउटपुट - XX, XY, YX, YY

इस समस्या को हल करने के लिए, हमें फिक्स और रिकर तर्क का उपयोग करने की आवश्यकता है। यहां, हम सरणी के पहले इंडेक्स पर एक तत्व को फिक्स करेंगे और फिर अनुक्रम में अगले तत्वों के लिए रिकर्सिव कॉल करेंगे।

आइए एक कार्यान्वयन उदाहरण देखें जो समाधान को आपके लिए स्पष्ट कर देगा।

इनपुट स्ट्रिंग XY।

पहले तत्व को 1 इंडेक्स पर फिक्स करें: X_

अन्य तत्वों को रिकर्सिवली कॉल करें और भरें: XX -> XY

अब अगले तत्व को इंडेक्स 1 पर फिक्स करें: Y_

अन्य तत्वों को रिकर्सिवली कॉल करें और भरें: YX -> YY

यही तर्क 3,4,n लंबाई की स्ट्रिंग के लिए इस्तेमाल किया जा सकता है।

उदाहरण

#include <iostream> #include<string.h> using namespace std; void printPermutations(char *str, char* permutations, int last, int index){    int i, len = strlen(str);    for ( i = 0; i < len; i++ ) {       permutations[index] = str[i] ;       if (index == last)          cout<<permutations <<"\t";       else          printPermutations (str, permutations, last, index+1);    } } int main() {    char str[] = "ABC";    cout<<"All permutations of the string with repetition of "<<str<<" are: "<<endl ;    int len = strlen(str) ;    char permutations[len];    printPermutations (str, permutations, len-1, 0);    return 0; }

आउटपुट

All permutations of the string with repetition of ABC are: AAA AAB AAC ABA ABB ABC ACA ACB ACC BAA BAB BAC BBA BBB BBC BCA BCB BCC CAA CAB CAC CBA CBB CBC CCA CCB CCC

  1. - C++ में डुप्लिकेट की अनुमति के साथ इनपुट में विशिष्ट सॉर्टेड क्रमपरिवर्तन प्रिंट करें

    इस प्रोग्रामिंग समस्या में, हमें एक स्ट्रिंग दी गई है और हमें स्ट्रिंग तत्वों से बनने वाले विशिष्ट सॉर्टेड क्रमपरिवर्तन प्रिंट करने हैं। इस समस्या की शर्त यह है कि स्ट्रिंग में एक वर्ण हो सकता है जो एक से अधिक बार आएगा। साथ ही, दी गई स्ट्रिंग सॉर्ट क्रम में इनपुट की गई है। आइए एक उदाहरण लेकर अवधारणा

  1. - C++ में स्ट्रिंग के सभी कैरेक्टर्स को टॉगल करना

    यह प्रोग्राम स्ट्रिंग के कैरेक्टर्स को अपरकेस में बदलता है। हालांकि, इस कार्य को C++ क्लास लाइब्रेरी के toUpper() मेथड का उपयोग करके आसानी से प्राप्त किया जा सकता है। लेकिन इस प्रोग्राम में, हम अपरकेस में कैरेक्टर्स के ASCII वैल्यू की गणना करके ऐसा करते हैं। एल्गोरिदम निम्नलिखित है: एल्गोरिदम शुरुआत

  1. - जावा में स्ट्रिंग के सभी क्रमपरिवर्तन प्रिंट करना

    स्ट्रिंग के सभी क्रमपरिवर्तन प्रिंट करने के लिए जावा प्रोग्राम निम्नलिखित है: उदाहरण public class Demo{ static void print_permutations(String my_str,String my_ans){ if (my_str.length() == 0){ System.out.print(my_ans + ); return; } boolean m