पास्कल त्रिकोण क्या है?
पास्कल त्रिकोण पूर्णांकों का एक त्रिकोणीय सरणी है जहां प्रत्येक संख्या उसके ऊपर की दो संख्याओं का योग होती है। यह द्विपद गुणांक (binomial coefficients) को दर्शाता है।
निर्माण नियम
- त्रिकोण के बाहर के सभी मान शून्य (0) माने जाते हैं।
- पहली पंक्ति केवल
1होती है। - प्रत्येक अगली पंक्ति पिछली पंक्ति के आसन्न तत्वों को जोड़कर बनाई जाती है।
- प्रत्येक पंक्ति के दोनों किनारों पर
1होता है।
प्रोग्राम 1: फैक्टोरियल और संयोजन (nCr) का उपयोग करके
#include <stdio.h>
int fact(int n) {
int result = 1;
for (int i = 1; i <= n; i++)
result *= i;
return result;
}
int main() {
int rows, i, j;
printf("पंक्तियों की संख्या दर्ज करें: ");
scanf("%d", &rows);
for (i = 0; i < rows; i++) {
// स्पेस प्रिंट करें
for (j = 0; j <= rows - i - 2; j++)
printf(" ");
// मान प्रिंट करें: nCr = n! / (r! * (n-r)!)
for (j = 0; j <= i; j++)
printf("%d ", fact(i) / (fact(j) * fact(i - j)));
printf("\n");
}
return 0;
}
आउटपुट (rows = 5)
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
प्रोग्राम 2: सरणी के बिना, पुनरावृत्त सूत्र का उपयोग करके
यह विधि अधिक कुशल है क्योंकि यह प्रत्येक मान को पिछले मान से गणना करती है: C(n, k) = C(n, k-1) * (n - k + 1) / k
#include <stdio.h>
int main() {
int num, row, i;
printf("पंक्तियों की संख्या दर्ज करें: ");
scanf("%d", &num);
for (row = 1; row <= num; row++) {
int val = 1;
for (i = 1; i <= row; i++) {
printf("%d ", val);
val = val * (row - i) / i;
}
printf("\n");
}
return 0;
}
आउटपुट (rows = 6)
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
तुलना
| विधि | समय जटिलता | स्पेस जटिलता | टिप्पणी |
|---|---|---|---|
| फैक्टोरियल (nCr) | O(n³) | O(1) | बड़ी संख्याओं के लिए ओवरफ्लो संभव |
| पुनरावृत्त सूत्र | O(n²) | O(1) | अधिक कुशल, ओवरफ्लो कम |
अनुप्रयोग
- द्विपद विस्तार:
(a + b)^n - संभाव्यता और संयोजन गणना
- फ्रैक्टल पैटर्न (सियरपिंस्की त्रिकोण)