কম্পিউটার টিউটোরিয়াল

C++ গ্রিডে একটি পয়েন্ট থেকে অন্য পয়েন্টে যাওয়ার পথের সংখ্যা বের করুন


এই আর্টিকেলে, আমাদের একটি প্রশ্ন দেওয়া আছে যেখানে পয়েন্ট A থেকে B-এ যাওয়ার মোট পথের সংখ্যা বের করতে হবে, যেখানে A এবং B ফিক্সড পয়েন্ট, অর্থাৎ A হলো গ্রিডের টপ-লেফট (top-left) পয়েন্ট এবং B হলো গ্রিডের বটম-রাইট (bottom-right) পয়েন্ট। উদাহরণস্বরূপ:

Input : N = 5 Output : 252 Input : N = 4 Output : 70 Input : N = 3 Output : 20

দেওয়া সমস্যায়, আমরা সহজ পর্যবেক্ষণ দিয়ে উত্তরটি ফর্মুলাইজ করতে পারি এবং ফলাফল পেতে পারি।

সমাধানের পদ্ধতি

এই পদ্ধতিতে, আমরা প্রদত্ত সমস্যার জন্য একটি সূত্র তৈরি করি পর্যবেক্ষণ দিয়ে যে গ্রিডে A থেকে B-এ যাওয়ার জন্য আমাদের ডান দিকের দিকে n বার এবং নিচের দিকে n বার ট্রাভেল করতে হবে, তাই মানে আমাদের এই পথগুলোর সব কোম্বিনেশন (combination) বের করতে হবে, যা আমাদের (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-এ যাওয়ার জন্য আমাদের ঠিক ২*n অপারেশন লাগবে দুটি ডাইরেকশনে, অর্থাৎ এক ডাইরেকশনে n অপারেশন এবং অন্য ডাইরেকশনে n অপারেশন। তাই আমরা এই অপারেশনগুলোর সব সম্ভাব্য কোম্বিনেশন বের করি, অর্থাৎ (2*n)! / (n! * n!)。 এই প্রোগ্রামের ওভারঅল টাইম কমপ্লেক্সিটি O(1) অর্থাৎ আমাদের কমপ্লেক্সিটি দেওয়া n-এর ওপর নির্ভর করে না।

উপসংহার

এই আর্টিকেলে, আমরা একটি গ্রিডে একটি পয়েন্ট থেকে অন্য পয়েন্টে যাওয়ার পথের সংখ্যা বের করার সমস্যা আলোচনা করেছি। আমরা এই সমস্যার জন্য C++ প্রোগ্রাম এবং সম্পূর্ণ পদ্ধতি শিখেছি। একই প্রোগ্রামটি C, Java, Python এবং অন্যান্য ভাষায়ও লিখা যায়। আশা করি আপনি এই আর্টিকেলটিকে উপকারী পাবেন।


  1. C++ দিয়ে একটি স্ট্রিংয়ের সাবস্ট্রিং-এর সংখ্যা বের করা

  2. C++ দিয়ে N-ary ট্রি ট্রাভার্স করার উপায়ের সংখ্যা বের করা

  3. C++-এ ট্রেন স্টপেজ স্টেশন সংখ্যা বের করুন

  4. C++-এ দিয়ে गये পয়েন্ট থেকে সম্ভাব্য কোয়াড্রিল্যাটারেল সংখ্যা বের করুন