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

C++ प्रोग्राम: पुनरावृत्ति संबंध द्वारा nCr कॉम्बिनेशन गणना


यह C++ प्रोग्राम पुनरावृत्ति संबंध (Recurrence Relation) का उपयोग करके कॉम्बिनेशन nCr (n में से r चुनने के तरीके) की गणना करता है। सूत्र: nCr = n! / (r! × (n-r)!)

एल्गोरिदम

शुरुआत
  1. फंक्शन CalCombination():
     आर्गुमेंट्स: n, r
     बॉडी:
     पुनरावृत्ति संबंध द्वारा कॉम्बिनेशन कैलकुलेट करें:
     nCr = (n/r) × (n-1)C(r-1)
     बेस केस: r=0 होने पर 1 लौटाएं
समाप्ति

उदाहरण कोड

#include <iostream>
using namespace std;

long long CalCombination(long long n, long long r) {
    if (r > n) return 0;
    if (r == 0 || r == n) return 1;
    // समरूपता गुण का उपयोग: nCr = nC(n-r)
    if (r > n - r) r = n - r;
    
    long long result = 1;
    for (long long i = 1; i <= r; i++) {
        result = result * (n - r + i) / i;
    }
    return result;
}

// पुनरावृत्ति संस्करण (मूल कोड के अनुसार)
float CalCombinationRecursive(float n, float r) {
    if (r > 0)
        return (n / r) * CalCombinationRecursive(n - 1, r - 1);
    else
        return 1;
}

int main() {
    long long n, r;
    cout << "Enter the value of n: ";
    cin >> n;
    cout << "Enter the value of r: ";
    cin >> r;
    
    long long res = CalCombination(n, r);
    cout << "\nThe number of possible combinations are: nCr = " << res;
    
    // पुनरावृत्ति संस्करण का डेमो
    cout << "\n\nRecursive version result: " << (int)CalCombinationRecursive(n, r);
    return 0;
}

आउटपुट

Enter the value of n: 7
Enter the value of r: 6
The number of possible combinations are: nCr = 7

Recursive version result: 7

सुधार नोट: मूल कोड में आउटपुट 2 दिखाया गया था जो गलत है (7C6 = 7 होना चाहिए)। पुनरावृत्ति संस्करण में फ्लोटिंग पॉइंट प्रिसिजन इश्यू हो सकता है। मैंने इंटीजर अरिथमेटिक वाला इटरेटिव संस्करण जोड़ा है जो अधिक सटीक और कुशल है।

गुण: nCr = nC(n-r), nC0 = nCn = 1, nC1 = n

  1. C++ में हेक्साडेसिमल से डेसिमल रूपांतरण C++ में हेक्साडेसिमल से डेसिमल रूपांतरण

    एक हेक्साडेसिमल संख्या इनपुट के रूप में दी गई है, कार्य दी गई हेक्साडेसिमल संख्या को डेसिमल संख्या में बदलना है। कंप्यूटर में हेक्साडेसिमल संख्या को आधार 16 के साथ दर्शाया जाता है और डेसिमल संख्या को आधार 10 के साथ दर्शाया जाता है और मान 0-9 से दर्शाए जाते हैं जबकि हेक्साडेसिमल संख्या में 0-15 से अं

  1. C++ में पिरामिड के आयतन का प्रोग्राम C++ में पिरामिड के आयतन का प्रोग्राम

    पिरामिड के बेस के प्रकार के आधार पर भुजाएं दी गई हैं, कार्य पिरामिड का आयतन गणना करना है।पिरामिड एक 3-D आकृति है जिसकी बाहरी सतहें त्रिकोणीय हैं जो सामान्य बिंदु पर मिलती हैं जिससे पिरामिड का तीक्ष्ण किनारा बनता है। पिरामिड का आयतन उसके बेस के प्रकार पर निर्भर करता है।पिरामिड के बेस के विभिन्न प्रका

  1. C++ में क्विकसॉर्ट प्रोग्राम C++ में क्विकसॉर्ट प्रोग्राम

    क्विकसॉर्ट क्या है? क्विकसॉर्ट एक सॉर्टिंग तकनीक है जो अनसॉर्टेड सूची (सरणी) को सॉर्ट करने के लिए तुलनाओं का उपयोग करती है। क्विकसॉर्ट को पार्टीशन एक्सचेंज सॉर्ट के नाम से भी जाना जाता है। यह एक स्थिर सॉर्ट नहीं है, क्योंकि समान सॉर्ट आइटम्स का सापेक्ष क्रम संरक्षित नहीं रहता। क्विकसॉर्ट एक सरणी प