এই নিবন্ধে, আমাদের একটি প্রশ্ন দেওয়া হয়েছে যেখানে আমাদের বিন্দু A থেকে B পর্যন্ত মোট পথের সংখ্যা খুঁজে বের করতে হবে যেখানে A এবং B স্থির বিন্দু, যেমন, A হল গ্রিডের উপরের-বাম বিন্দু এবং B হল নীচে গ্রিডে ডান বিন্দু উদাহরণস্বরূপ −
Input : N = 5 Output : 252 Input : N = 4 Output : 70 Input : N = 3 Output : 20
প্রদত্ত সমস্যায়, আমরা সাধারণ পর্যবেক্ষণের মাধ্যমে উত্তরটিকে আনুষ্ঠানিক করতে পারি এবং আমাদের ফলাফল পেতে পারি।
সমাধান খোঁজার পদ্ধতি
এই পদ্ধতিতে, আমরা পর্যবেক্ষণের দ্বারা প্রদত্ত সমস্যার জন্য একটি সূত্র তৈরি করি যে A থেকে B পর্যন্ত গ্রিডের মধ্য দিয়ে ভ্রমণের জন্য, আমাদের n বার সঠিক দিকে এবং n বার নীচের দিকে ভ্রমণ করতে হবে, তাই এর অর্থ হল আমাদের প্রয়োজন এই পথগুলির সমন্বয়ের সমস্ত সম্ভাবনা খুঁজে বের করুন, যাতে এটি আমাদেরকে (n+n) এবং n-এর সমন্বয়ের সূত্র দেয়।
উদাহরণ
#include<bits/stdc++.h> using namespace std; int fact(int n){ // factorial function if(n <= 1) return 1; return n * fact(n-1); } int main() { int n = 5; // given n int answer = 0; // our answer answer = fact(n+n); // finding factorial of 2*n answer = answer / (fact(n) * fact(n)); // (2*n)! / (n! + n!) cout << answer << "\n"; }
আউটপুট
252
উপরের কোডের ব্যাখ্যা
এই কোডটিতে, আমরা 2*n থেকে n এর সংমিশ্রণের সূত্রটি গণনা করি কারণ আমরা জানি যে বিন্দু A থেকে B পর্যন্ত ভ্রমণের জন্য, আমাদের দুটি দিক থেকে ঠিক 2*n অপারেশনের প্রয়োজন হবে, অর্থাৎ, এক দিকে n অপারেশন এবং অন্য এন অপারেশন এবং তাই আমরা এই অপারেশনগুলির সমস্ত সম্ভাব্য সমন্বয় খুঁজে পাই, যেমন (2*n)!/ (n! + n!)। প্রদত্ত প্রোগ্রামের সামগ্রিক সময়ের জটিলতা হল O(1) যার মানে আমাদের জটিলতা প্রদত্ত n-এর উপর নির্ভর করে না।
উপসংহার
এই নিবন্ধে, আমরা একটি গ্রিডে এক বিন্দু থেকে অন্য বিন্দুতে যাওয়ার উপায় খুঁজে বের করার জন্য একটি সমস্যা নিয়ে আলোচনা করেছি। আমরা এই সমস্যার জন্য C++ প্রোগ্রাম এবং আমরা যে সম্পূর্ণ পদ্ধতির সমাধান করেছি তাও শিখেছি। আমরা অন্যান্য ভাষা যেমন সি, জাভা, পাইথন এবং অন্যান্য ভাষায় একই প্রোগ্রাম লিখতে পারি। আমরা আশা করি আপনার এই নিবন্ধটি সহায়ক হবে৷