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

C++ प्रोग्राम: दिए गए केस के लिए N कैरेक्टर्स की सीक्वेंस उत्पन्न करना


यह C++ प्रोग्राम एक बेस स्ट्रिंग से दिए गए लंबाई के N रैंडम कैरेक्टर सीक्वेंस उत्पन्न करता है। प्रत्येक जनरेटेड सीक्वेंस में यूनिक कैरेक्टर होते हैं (कोई डुप्लिकेट नहीं)।

एल्गोरिदम

शुरुआत
  1. फंक्शन GenerateSequence() N कैरेक्टर्स की सीक्वेंस जनरेट करता है:
     - रैंडम इंडेक्स के लिए rand() उपयोग करें
     - पहला कैरेक्टर सीधे सीक्वेंस में स्टोर करें
     - यदि वह सीक्वेंस पहले उपयोग हुआ है, तो उसे छोड़ दें और फिर से रैंडम इंडेक्स जनरेट करें
समाप्ति

उदाहरण कोड

#include <iostream>
#include <cstdlib>
#include <cstring>
using namespace std;

void GenerateSequence(char baseStr[], int seqLen, int baseLen, char *sequence) {
    int i, j = 0, k, index;
    
    for (i = 0; i < seqLen; i++) {
        // पहला कैरेक्टर सीधे स्टोर करें
        if (j == 0)
            sequence[j++] = baseStr[rand() % baseLen];
        else {
            retry:
            index = rand() % baseLen;
            // जांचें कि क्या यह कैरेक्टर पहले से सीक्वेंस में है
            for (k = 0; k < j; k++) {
                if (baseStr[index] == sequence[k])
                    goto retry;  // डुप्लिकेट मिला, पुनः प्रयास करें
            }
            sequence[j++] = baseStr[index];
        }
    }
    sequence[j] = '\0';  // नल कैरेक्टर से समाप्त करें
}

int main() {
    int n, m, baseLen, i;
    char baseStr[100];
    
    cout << "Enter the original string: ";
    cin >> baseStr;
    cout << "\nEnter the number of strings to generate: ";
    cin >> n;
    cout << "\nEnter the length of each string: ";
    cin >> m;
    
    baseLen = strlen(baseStr);
    
    // जांच: सीक्वेंस लंबाई बेस स्ट्रिंग लंबाई से अधिक नहीं होनी चाहिए
    if (m > baseLen) {
        cout << "Error: Sequence length cannot exceed base string length!\n";
        return 1;
    }
    
    // बेहतर रैंडमनेस के लिए सीड सेट करें
    srand(time(0));
    
    for (i = 0; i < n; i++) {
        char sequence[m + 1];
        GenerateSequence(baseStr, m, baseLen, sequence);
        cout << "\nSequence " << i+1 << ": " << sequence;
    }
    return 0;
}

आउटपुट

Enter the original string: tutorialspoint
Enter the number of strings to generate: 7
Enter the length of each string: 6

Sequence 1: tuanol
Sequence 2: itlurp
Sequence 3: tonaiu
Sequence 4: untlri
Sequence 5: liorpt
Sequence 6: liusto
Sequence 7: luisot

व्याख्या: प्रोग्राम बेस स्ट्रिंग से बिना रिप्लेसमेंट के रैंडम सैंपलिंग करता है। प्रत्येक जनरेटेड सीक्वेंस में यूनिक कैरेक्टर होते हैं। goto का उपयोग रिकर्सन के बिना रीट्राई लॉजिक के लिए किया गया है। आधुनिक C++ में std::shuffle या std::sample बेहतर विकल्प हैं।

  1. - C++ प्रोग्राम: दिए गए फिक्स्ड डिग्री सीक्वेंस के लिए ग्राफ जनरेट करें

    परिचययह एक C++ प्रोग्राम है जो दिए गए डिग्री सीक्वेंस के लिए एक अनडायरेक्टेड ग्राफ को दर्शाता है। इस एल्गोरिदम की समय जटिलता O(v*v) है और इसमें सेल्फ-एज और मल्टीपल एज शामिल नहीं हैं। एल्गोरिदमग्राफ बनाने के लिए, प्रत्येक वर्टेक्स i को जोड़ने के लिए पहला लूप बनाएं। वर्टेक्स i को उसके बगल के प्रत्येक

  1. - C++ प्रोग्राम: दिए गए एज की संख्या के लिए रैंडम डायरेक्टेड एसाइक्लिक ग्राफ (DAG) जनरेट करें

    परिचयइस प्रोग्राम में हम दिए गए एज e के लिए एक रैंडम डायरेक्टेड एसाइक्लिक ग्राफ जनरेट करते हैं। इस प्रोग्राम की समय जटिलता O(e*v*e) है। एल्गोरिदमGenerateRandomGraphs() फ़ंक्शन में e को एज की संख्या के रूप में लें। दो रैंडम नंबर के बीच एक कनेक्शन जनरेट करें, एक छोटे केस के लिए वर्टेक्स की संख्या को 2

  1. - विशिष्ट खोज अनुक्रम के लिए बाइनरी सर्च एल्गोरिदम लागू करने के लिए C++ प्रोग्राम

    इस प्रोग्राम में हमें सरणी में खोज अनुक्रम के अस्तित्व को खोजने के लिए बाइनरी सर्च लागू करने की आवश्यकता है। बाइनरी सर्च की समय जटिलता O(log n) है। आवश्यक चरण और छद्म कोड शुरुआत    BinarySearch() फ़ंक्शन में arr डेटा की सरणी और n मानों की संख्या, प्रारंभ और अंत इंडेक्स, इटरेशन काउंट और b[0