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

C++ में बाइनोमियल गुणांक


बाइनोमियल गुणांक जिसे c(n,k) या ncr के रूप में दर्शाया जाता है, (1+X)n के बाइनोमियल विस्तार में xk के गुणांक के रूप में परिभाषित किया जाता है।

बाइनोमियल गुणांक उन तरीकों की संख्या का मान भी देता है जिनमें n वस्तुओं में से k वस्तुओं को चुना जाता है यानी n-एलिमेंट सेट के k-कॉम्बिनेशन्स। चयन का क्रम विचार नहीं किया जाता।

यहां, हमें दो पैरामीटर्स n और k दिए गए हैं और हमें बाइनोमियल गुणांक nck का मान लौटाना है।

उदाहरण

इनपुट: n = 8 और k = 3 
आउटपुट: 56

इस समस्या के कई समाधान हो सकते हैं,

सामान्य समाधान

रिकर्सिव कॉल का उपयोग करके c(n,k) का मान निकालने की एक विधि है। बाइनोमियल गुणांकों का मान निकालने के लिए मानक फॉर्मूला जो रिकर्सिव कॉल का उपयोग करता है, वह है:

c(n,k) = c(n-1, k-1) + c(n-1, k)

c(n, 0) = c(n, n) = 1

उपरोक्त फॉर्मूला का उपयोग करने वाले रिकर्सिव कॉल का कार्यान्वयन:

उदाहरण

#include <iostream> 
using namespace std; 

int binomialCoefficients(int n, int k) { 
    if (k == 0 || k == n) 
        return 1; 
    return binomialCoefficients(n - 1, k - 1) + binomialCoefficients(n - 1, k); 
} 

int main() { 
    int n = 8, k = 5; 
    cout << "The value of C(" << n << ", " << k << ") is " << binomialCoefficients(n, k); 
    return 0; 
}

आउटपुट

The value of C(8, 5) is 56

एक और समाधान ओवरलैपिंग सबप्रॉब्लम का उपयोग कर सकता है। इसलिए, हम सबप्रॉब्लम से बचने के लिए डायनामिक प्रोग्रामिंग एल्गोरिदम का उपयोग करेंगे।

उदाहरण

#include <bits/stdc++.h> 
using namespace std; 

int binomialCoefficients(int n, int k) { 
    int C[k+1]; 
    memset(C, 0, sizeof(C)); 
    C[0] = 1; 
    for (int i = 1; i <= n; i++) { 
        for (int j = min(i, k); j > 0; j--) 
            C[j] = C[j] + C[j-1]; 
    } 
    return C[k]; 
} 

int main() { 
    int n = 8, k = 5; 
    cout << "The value of C(" << n << ", " << k << ") is " << binomialCoefficients(n, k); 
    return 0; 
}

आउटपुट

The value of C(8, 5) is 56

  1. - C में अधिकतम द्विपद गुणांक पद मान

    समस्या विवरण हमें एक धनात्मक पूर्णांक N दिया गया है। हमें सभी द्विपद गुणांकों में अधिकतम गुणांक पद ढूंढना है। द्विपद गुणांक श्रृंखला है: nC0, nC1, nC2, ..., nCr, ..., nCn-2, nCn-1, nCn nCr का अधिकतम मान ढूंढें। nCr = n! / (r! * (n - r)!) उदाहरण 1 इनपुट: N=4 आउटपुट: अधिकतम गुणांक: 6 व्याख्या: 4C0

  1. C++ में द्विपद हीप का मेमोरी प्रतिनिधित्व C++ में द्विपद हीप का मेमोरी प्रतिनिधित्व

    द्विपद वृक्ष क्या है? द्विपद वृक्ष एक क्रमबद्ध वृक्ष डेटा संरचना है, मान लीजिए B0 में एक नोड होता है जबकि Bk के रूप में दर्शाया गया द्विपद वृक्ष दो द्विपद वृक्षों यानी Bk-1 से मिलकर होता है जो एक साथ जुड़े होते हैं। एक द्विपद वृक्ष की जड़ दूसरे द्विपद वृक्ष की जड़ का बायां बच्चा होती है। द्विपद वृक्

  1. C++ में बाइनोमियल हीप C++ में बाइनोमियल हीप

    बाइनोमियल हीप को बाइनरी हीप के विस्तार के रूप में परिभाषित किया गया है जो बाइनरी हीप द्वारा प्रदान किए गए अन्य ऑपरेशन्स के साथ तेज़ मर्ज या यूनियन ऑपरेशन प्रदान करता है।एक बाइनोमियल हीप को बाइनोमियल ट्रीज़ के संग्रह के रूप में माना जाता है।बाइनोमियल ट्री क्या है?k क्रम का एक बाइनोमियल ट्री k-1 क्रम