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

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

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

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

एल्गोरिदम

arrangeWayCount(str)

शुरुआत
    आवृत्ति स्टोर करने के लिए 'freq' ऐरे परिभाषित करें
    freq ऐरे में प्रत्येक वर्ण की गिनती और आवृत्ति रखें। जैसे freq['a'] 'a' की आवृत्ति रखेगा, freq[1] 'b' की आवृत्ति रखेगा, आदि।
    v := स्वरों की संख्या, c := व्यंजनों की संख्या str में
    vArrange := v का फैक्टोरियल
    [a, e, i, o, u] में प्रत्येक स्वर v के लिए करें
        vArrange := vArrange / v की आवृत्ति का फैक्टोरियल
    पूर्ण
    cArrange := c का फैक्टोरियल
    प्रत्येक व्यंजन con के लिए करें
        cArrange := cArrange / con की आवृत्ति का फैक्टोरियल
    पूर्ण
    vArrange * cArrange वापस करें
समाप्त

उदाहरण

#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[26] = {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 = factorial(v);
    arrangeVowel /= factorial(freq[0]); // a
    arrangeVowel /= factorial(freq[4]); // e
    arrangeVowel /= factorial(freq[8]); // i
    arrangeVowel /= factorial(freq[14]); // o
    arrangeVowel /= factorial(freq[20]); // u
    long long 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]);
    }
    long long total = arrangeVowel * arrangeConsonant;
    return total;
}

int main() {
    string str = "computer";
    long long ans = arrangeWayCount(str);
    cout << "Possible ways to arrange: " << ans << endl;
    return 0;
}

आउटपुट

Possible ways to arrange: 720
  1. आयाम सेट किए बिना Tkinter विंडो की स्थिति कैसे सेट करें? आयाम सेट किए बिना Tkinter विंडो की स्थिति कैसे सेट करें?

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

  1. विंडोज 10 में यूज़र एक्सेस को डेट और टाइम सेटिंग्स के लिए नियंत्रित करें विंडोज 10 में यूज़र एक्सेस को डेट और टाइम सेटिंग्स के लिए नियंत्रित करें

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

  1. गूगल होम: घरेलू प्रबंधन और स्मार्ट खरीदारी को पुनर्परिभाषित करना गूगल होम: घरेलू प्रबंधन और स्मार्ट खरीदारी को पुनर्परिभाषित करना

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