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

C++ . में द्विपद गुणांक

द्विपद गुणांक c(n,k) या n . के रूप में दर्शाया गया है ग<उप>आर x k . के गुणांक के रूप में परिभाषित किया गया है (1+X) n . के द्विपद विस्तार में ।

द्विपद गुणांक उन तरीकों की संख्या का भी मान देता है जिनमें k वस्तुओं को n वस्तुओं में से चुना जाता है अर्थात n-तत्व सेट के k-संयोजन। मदों के चयन के क्रम पर विचार नहीं किया गया।

यहां, हमें दो पैरामीटर n और k दिए गए हैं और हमें द्विपद गुणांक का मान वापस करना होगा n ग<उप>के

उदाहरण

Input : n = 8 and k = 3
Output : 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 दिया गया है। हमें सभी द्विपद गुणांकों में अधिकतम गुणांक पद ज्ञात करना है। द्विपद गुणांक श्रृंखला n . है सी0 , एन सी1 , एन सी2 ,…., एन सीआर ,…., एन सीएन-2 , एन सीएन-1 , एन सीएन n . का अधिकतम मान ज्ञात कीजिए सीआर । nCr = n! / r! * (n - r)! इनपुट -एन=4 आउटपुट - अधिकतम गु

  1. C++ . में द्विपद हीप का स्मृति निरूपण

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

  1. सी ++ में द्विपद ढेर?

    द्विपद हीप को बाइनरी हीप के विस्तार के रूप में परिभाषित किया गया है जो बाइनरी हीप द्वारा प्रदान किए गए अन्य कार्यों के साथ तेजी से विलय या संघ संचालन प्रदान करता है। द्विपद ढेर को द्विपद वृक्षों के संग्रह के रूप में माना जाता है। द्विपद वृक्ष क्या है? क्रम k-1 के दो द्विपद वृक्षों को लेकर और एक क