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

সিঁড়ি চড়া পদ্ধতি গণনা (১, ২, ৩ ধাপ) C++-এ

n ধাপের একটি সিঁড়ি দেওয়া থাকলে, প্রতিবার ১, ২ বা ৩ ধাপ চড়া যেতে পারে। শীর্ষে পৌঁছানোর মোট কতটি পদ্ধতি আছে তা বের করতে হবে।

উদাহরণ

n = 3

পদ্ধতিগুলো: 1+1+1, 1+2, 2+1, 3 → মোট 4টি

n = 5 → মোট 13টি

অ্যালগরিদম

  1. রিকারসিভ (O(3^n)): f(n) = f(n-1) + f(n-2) + f(n-3) with base cases f(0)=1, f(1)=1, f(2)=2
  2. ডাইনামিক প্রোগ্রামিং (O(n)): বটম-আপ বা মেমোইজেশন ব্যবহার করুন।

C++ কোড উদাহরণ (দুই পদ্ধতি)

#include <iostream>
#include <vector>
using namespace std;

// Recursive with memoization
int countWaysMemo(int n, vector& dp) {
    if (n < 0) return 0;
    if (n == 0) return 1;
    if (dp[n] != -1) return dp[n];
    return dp[n] = countWaysMemo(n-1, dp) + countWaysMemo(n-2, dp) + countWaysMemo(n-3, dp);
}

// Bottom-up DP
int countWaysDP(int n) {
    if (n <= 1) return 1;
    if (n == 2) return 2;
    
    vector dp(n+1);
    dp[0] = 1; dp[1] = 1; dp[2] = 2;
    for (int i = 3; i <= n; i++)
        dp[i] = dp[i-1] + dp[i-2] + dp[i-3];
    return dp[n];
}

int main() {
    int n = 5;
    vector dp(n+1, -1);
    cout << "Memo: " << countWaysMemo(n, dp) << endl;
    cout << "DP: " << countWaysDP(n);
    return 0;
}

ইনপুট

5

আউটপুট

13
  1. C++-এ Nth সম দৈর্ঘ্যের প্যালিনড্রোম সংখ্যা বের করা

  2. OpenCV-এ C++ ব্যবহার করে চেহারার সংখ্যা গণনা করা

  3. OpenCV-এ C++ ব্যবহার করে মোট ফ্রেম সংখ্যা গণনা করা

  4. C++-এ 1 x m আকারের টাইল দিয়ে n x m আকারের ফ্লোর টাইল করার পদ্ধতির সংখ্যা গণনা