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

सी ++ प्रोग्राम किसी दिए गए स्ट्रिंग के क्रमपरिवर्तन की संख्या का पता लगाने के लिए

हम एक स्ट्रिंग के पात्रों को अलग-अलग क्रम में व्यवस्थित कर सकते हैं। यहां हम देखेंगे कि हम कैसे गिन सकते हैं कि किसी दिए गए स्ट्रिंग से कितने क्रमपरिवर्तन बन सकते हैं।

हम जानते हैं कि यदि एक स्ट्रिंग 'abc' है। इसमें तीन वर्ण हैं; हम उन्हें 3 में व्यवस्थित कर सकते हैं! =6 अलग-अलग तरीके। तो n वर्णों वाली एक स्ट्रिंग, हम उन्हें n में व्यवस्थित कर सकते हैं! विभिन्न तरीके। लेकिन अब अगर एक ही वर्ण कई बार मौजूद हैं, जैसे आब, तो 6 क्रमपरिवर्तन नहीं होंगे।

  • अबा
  • आब
  • बा
  • बा
  • आब
  • अबा

यहाँ (1,6), (2, 5), (3,4) समान हैं। तो यहाँ क्रमपरिवर्तन की संख्या 3 है। यह मूल रूप से (n!)/(सभी वर्णों के फ़ैक्टोरियल का योग है जो एक से अधिक बार हो रहा है)।

इस समस्या को हल करने के लिए, सबसे पहले हमें सभी वर्णों की आवृत्ति की गणना करनी होगी। फिर n के फैक्टोरियल को गिनें, फिर सभी फ़्रीक्वेंसी मानों का योग करके इसे विभाजित करें जो 1 से अधिक हैं।

उदाहरण कोड

#include<iostream>
using namespace std;
long fact(long n) {
   if(n == 0 || n == 1 )
      return 1;
   return n*fact(n-1);
}
int countPermutation(string str) {
   int freq[26] = {0};
   for(int i = 0; i<str.size(); i++) {
      freq[str[i] - 'a']++; //get the frequency of each characters individually
   }
   int res = fact(str.size()); //n! for string of length n
   for(int i = 0; i<26; i++) {
      if(freq[i] > 1)
         res /= fact(freq[i]); //divide n! by (number of occurrences of each characters)!
   }
   return res;
}
main(){
   string n;
   cout << "Enter a number to count number of permutations can be possible: ";
   cin >> n;
   cout << "\nThe number of permutations: " << countPermutation(n);
}

आउटपुट

Enter a number to count number of permutations can be possible: abbc
The number of permutations: 12

  1. C++ प्रोग्राम दिए गए ग्राफ़ में ब्रिज किनारों की संख्या का पता लगाने के लिए

    मान लीजिए, हमें एक अभारित, अप्रत्यक्ष ग्राफ दिया गया है जिसमें n कोने और m किनारे हैं। ग्राफ़ में ब्रिज का किनारा वह किनारा होता है जिसके हटाने से ग्राफ़ डिस्कनेक्ट हो जाता है। हमें दिए गए आलेख में ऐसे आलेखों की संख्या ज्ञात करनी है। ग्राफ़ में समानांतर किनारे या सेल्फ़-लूप नहीं होते हैं। इसलिए, यद

  1. C++ में दी गई संख्या N के भाजक में सबसे बड़ी अच्छी संख्या ज्ञात कीजिए

    इस समस्या में, हमें एक संख्या N दी जाती है। हमारा कार्य दिए गए संख्या N के भाजक में सबसे बड़ी अच्छी संख्या ज्ञात करना है। । एक अच्छी संख्या2। समस्या को समझने के लिए एक उदाहरण लेते हैं, Input : N = 15 Output : 15 स्पष्टीकरण - Divisors of 15 : 1, 3, 5, 15. समाधान दृष्टिकोण समस्या का एक सरल समाधा

  1. C++ का उपयोग करके एक स्ट्रिंग के सबस्ट्रिंग की संख्या ज्ञात करें

    इस लेख में, आप किसी दिए गए स्ट्रिंग में बनाए जा सकने वाले सबस्ट्रिंग (गैर-रिक्त) की संख्या को खोजने के तरीकों के बारे में जानेंगे। Input : string = “moon” Output : 10 Explanation: Substrings are ‘m’, ‘o’, ‘o’, ‘n’, ‘mo’, &lsqu