इस लेख में, हमें एक प्रश्न दिया गया है जिसमें हमें बिंदु A से B तक जाने के कुल तरीकों की संख्या खोजने की आवश्यकता है जहां A और B निश्चित बिंदु हैं, यानी A ग्रिड में शीर्ष-बाएं बिंदु है और B ग्रिड में नीचे-दाएं बिंदु है। उदाहरण के लिए:
इनपुट: N = 5 आउटपुट: 252 इनपुट: N = 4 आउटपुट: 70 इनपुट: N = 3 आउटपुट: 20
दिए गए समस्या में, हम सरल अवलोकनों द्वारा उत्तर को औपचारिक रूप दे सकते हैं और अपने परिणाम प्राप्त कर सकते हैं।
समाधान का दृष्टिकोण
इस दृष्टिकोण में, हम दिए गए समस्या के लिए अवलोकनों द्वारा एक सूत्र बनाते हैं कि ग्रिड में A से B तक यात्रा करने के लिए, हमें दाएं दिशा में n बार और नीचे की दिशा में n बार यात्रा करने की आवश्यकता होती है, इसलिए इसका मतलब है कि हमें इन पथों के संयोजन की सभी संभावनाओं को खोजने की आवश्यकता है, इसलिए यह हमें (n+n) और n के संयोजन का सूत्र देता है।
उदाहरण
#include<bits/stdc++.h>
using namespace std;
int fact(int n) { // फैक्टोरियल फंक्शन
if(n <= 1)
return 1;
return n * fact(n-1);
}
int main() {
int n = 5; // दिया गया n
int answer = 0; // हमारा उत्तर
answer = fact(n+n); // 2*n का फैक्टोरियल ढूंढना
answer = answer / (fact(n) * fact(n)); // (2*n)! / (n! * n!)
cout << answer << "\n";
}
आउटपुट
252
उपरोक्त कोड की व्याख्या
इस कोड में, हम 2*n के n के संयोजन के सूत्र की गणना करते हैं क्योंकि हम जानते हैं कि बिंदु A से B तक यात्रा करने के लिए, हमें दो दिशाओं में ठीक 2*n ऑपरेशन की आवश्यकता होगी, यानी एक दिशा में n ऑपरेशन और दूसरी में n ऑपरेशन और इसलिए हम इन ऑपरेशन्स के सभी संभावित संयोजन ढूंढते हैं, यानी (2*n)! / (n! * n!)। दिए गए प्रोग्राम की समग्र समय जटिलता O(1) है जिसका अर्थ है कि हमारी जटिलता दिए गए n पर निर्भर नहीं करती।
निष्कर्ष
इस लेख में, हमने ग्रिड में एक बिंदु से दूसरे बिंदु तक जाने के तरीकों की संख्या खोजने की समस्या पर चर्चा की। हमने इस समस्या के लिए C++ प्रोग्राम और इसे हल करने के पूर्ण दृष्टिकोण को भी सीखा। हम इसी प्रोग्राम को C, Java, Python और अन्य भाषाओं में लिख सकते हैं। आशा है कि आपको यह लेख मददगार लगा होगा।