समस्या विवरण
हमें एक धनात्मक पूर्णांक 'N' दिया गया है। हमें सभी द्विपद गुणांकों में अधिकतम गुणांक पद ढूंढना है।
द्विपद गुणांक श्रृंखला है: nC0, nC1, nC2, ..., nCr, ..., nCn-2, nCn-1, nCn
nCr का अधिकतम मान ढूंढें।
nCr = n! / (r! * (n - r)!)
उदाहरण 1
इनपुट: N=4
आउटपुट: अधिकतम गुणांक: 6
व्याख्या: 4C0=1, 4C1=4, 4C2=6, 4C3=4, 4C4=1
उदाहरण 2
इनपुट: N=5
आउटपुट: अधिकतम गुणांक: 10
व्याख्या: 5C0=1, 5C1=5, 5C2=10, 5C3=10, 5C4=5, 5C5=1
दृष्टिकोण
- उपयोगकर्ता से N का इनपुट लें।
- फ़ंक्शन
maxCoeff(int n)एक पैरामीटर 'n' लेता है और C[n+1][n+1] में संग्रहीत अधिकतम गुणांक लौटाता है। - min और max चर को 0 से आरंभ करें। 'min' C[][] सरणी को पार करने के लिए और 'max' अधिकतम गुणांक मान संग्रहीत करने के लिए।
- i=0 से n तक for लूप C[][] सरणी आरंभ करने के लिए।
- दूसरे for लूप में 'i' या 'n' जो भी न्यूनतम हो, तक पार करें।
- यदि i==j, C[i][j]=1। अन्यथा C[i][j] = C[i-1][j-1] + C[i-1][j]।
- अब पूरी C[][] को फिर से पार करें और अधिकतम गुणांक को max में संग्रहीत करें।
- परिणाम लौटाएं।
C प्रोग्राम उदाहरण
#include <stdio.h>
int maxCoeff(int n) {
int C[n+1][n+1];
int max = 0, min = 0;
// द्विपद गुणांक के मान की गणना
for (int i = 0; i <= n; i++) {
min = i < n ? i : n;
for (int j = 0; j <= min; j++) {
if (j == 0 || j == i)
C[i][j] = 1;
else
C[i][j] = C[i-1][j-1] + C[i-1][j];
}
}
for (int i = 0; i <= n; i++) {
max = max > C[n][i] ? max : C[n][i];
}
return max;
}
int main() {
int N = 3;
printf("Maximum Coefficient: %d", maxCoeff(N));
return 0;
}
आउटपुट
Maximum Coefficient: 3
नोट: N=3 के लिए: 3C0=1, 3C1=3, 3C2=3, 3C3=1। अधिकतम 3 है।