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

स्वर और व्यंजन की सापेक्ष स्थिति को बदले बिना शब्दों की व्यवस्था?

मान लीजिए कि हमारे पास n तत्वों (n <10) के साथ एक स्ट्रिंग है। हमें स्वर और व्यंजन की सापेक्ष स्थिति को बदले बिना स्ट्रिंग को व्यवस्थित करने के तरीकों की संख्या ज्ञात करनी होगी।

दृष्टिकोण सरल है। हमें दी गई स्ट्रिंग में स्वरों और व्यंजनों की संख्या गिननी है, फिर हमें यह पता लगाना है कि हम केवल स्वरों को कितने तरीकों से व्यवस्थित कर सकते हैं, फिर व्यंजन को व्यवस्थित करने के तरीकों की संख्या ज्ञात करें, उसके बाद इन दोनों परिणामों को गुणा करके प्राप्त करें कुल तरीके।

एल्गोरिदम

अरेंजवेकाउंट(str)

Begin
   define an array ‘freq’ to store frequency.
   count and place frequency of each characters in freq array. such that freq[‘0’] will hold
   frequency of letter ‘a’, freq[1] will hold frequency of ‘b’ and so on.
   v := number of vowels, and c := number of consonants in str
   vArrange := factorial of v
   for each vowel v in [a, e, i, o, u], do
      vArrange := vArrange / factorial of the frequency of v
   done
   cArrange := factorial of c
   for each consonant con, do
      cArrange := cArrange / factorial of the frequency of con
   done
   return vArrange * cArrange
End

उदाहरण

#include <iostream>
using namespace std;
long long factorial(int n){
   if(n == 0 || n == 1)
      return 1;
   return n*factorial(n-1);
}
long long arrangeWayCount(string str){
   long long freq[27] = {0}; //fill frequency array to 0
   int v = 0, c = 0;
   for (int i = 0; i < str.length(); i++) {
      freq[str[i] - 'a']++;
      if (str[i] == 'a' || str[i] == 'e' || str[i] == 'i' || str[i] == 'o' || str[i] == 'u') {
         v++;
      }else
         c++;
   }
   long long arrangeVowel;
   arrangeVowel = factorial(v);
   arrangeVowel /= factorial(freq[0]); // vowel a
   arrangeVowel /= factorial(freq[4]); // vowel e
   arrangeVowel /= factorial(freq[8]); // vowel i
   arrangeVowel /= factorial(freq[14]); // vowel o
   arrangeVowel /= factorial(freq[20]); // vowel u
   long long arrangeConsonant;
   arrangeConsonant = factorial(c);
   for (int i = 0; i < 26; i++) {
      if (i != 0 && i != 4 && i != 8 && i != 14 && i != 20)
      arrangeConsonant /= factorial(freq[i]); //frequency of all characters except vowels
   }
   long long total = arrangeVowel * arrangeConsonant;
   return total;
}
main() {
   string str = "computer";
   long long ans = arrangeWayCount(str);
   cout << "Possible ways to arrange: " << ans << endl;
}

आउटपुट

Possible ways to arrange: 720

  1. आयाम निर्धारित किए बिना टिंकर विंडो की स्थिति कैसे सेट करें?

    टिंकर फ्रेम या विंडो के ऑब्जेक्ट को इनिशियलाइज़ करने के बाद टिंकर विंडो को निष्पादित किया जाता है। हम ज्यामिति प्रबंधक का उपयोग करके टिंकर विंडो या फ्रेम के आकार को परिभाषित कर सकते हैं। यह प्रारंभिक टिंकर विंडो की चौड़ाई और ऊंचाई को परिभाषित करता है जहां हम आम तौर पर अपने विजेट रखते हैं। चौड़ाई और

  1. उपयोगकर्ताओं को विंडोज 10 में दिनांक और समय बदलने की अनुमति दें या रोकें

    उपयोगकर्ताओं को अनुमति दें या उन्हें बदलने से रोकें Windows 10 में दिनांक और समय:  उपयोगकर्ता अपनी आवश्यकता के अनुसार अपनी तिथि और समय को अनुकूलित कर सकते हैं लेकिन कभी-कभी व्यवस्थापकों को इस पहुंच को अक्षम करने की आवश्यकता हो सकती है ताकि उपयोगकर्ता अपनी तिथि और समय नहीं बदल सकें। उदाहरण के लिए, जब

  1. Google होम - अपने घर के काम और खरीदारी करने के तरीके को बदलना

    “Google” . शब्द सुनते ही आपके दिमाग में क्या आता है? ? हर चीज और हर चीज का समाधान। हर सवाल का एक जवाब। हर खोज के लिए एक मार्गदर्शन। हमेशा आपकी तरफ से एक मदद। और सूची जारी है। Google ने अपनी मौजूदा सुविधा “Google नाओ” को अपग्रेड और विस्तारित करके एक व्यक्तिगत स्पर्श दिया । Google अब Google होम के रू