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

C++-তে ২ বা ৩ ধাপ চলে একটি পয়েন্টে পৌঁছানোর প্রোবাবিলিটি


একজন ব্যক্তি "A" শুরুর পজিশন X=0 থেকে চলতে শুরু করে। টাস্ক হলো সে ঠিক X=num-এ পৌঁছাবে কিনা তার প্রোবাবিলিটি বের করা, যদি সে প্রতিবার ২ বা ৩ ধাপ চলে। ২ ধাপ চলার প্রোবাবিলিটি = P, ৩ ধাপ চলার প্রোবাবিলিটি = 1-P।

ইনপুট − num=5, p=0.2

আউটপুট − 0.32

ব্যাখ্যা − ৫-এ পৌঁছানোর ২ পথ:

  • ২+৩: প্রোবাবিলিটি = ০.২ × ০.৮ = ০.১৬
  • ৩+২: প্রোবাবিলিটি = ০.৮ × ০.২ = ০.১৬
মোট = ০.৩২।

ইনপুট − num=2, p=0.1

আউটপুট − 0.1

প্রোগ্রামে ব্যবহৃত পদ্ধতি (Dynamic Programming)

  • probab[] অ্যারে ডিক্লেয়ার করুন সাইজ num+1।
    • probab[0]=1, probab[1]=0, probab[2]=p, probab[3]=1-p
  • i=4 থেকে num পর্যন্ত লুপ:
    • probab[i] = p*probab[i-2] + (1-p)*probab[i-3]
  • probab[num] রিটার্ন করুন।

অ্যালগরিদম

Start
function probab(num, p)
  probab[0]=1, probab[1]=0, probab[2]=p, probab[3]=1-p
  for i=4 to num
    probab[i] = p*probab[i-2] + (1-p)*probab[i-3]
  return probab[num]
Stop

উদাহরণ

#include <bits/stdc++.h>
using namespace std;

float probab(int num, float p) {
    vector dp(num + 1);
    dp[0] = 1;
    dp[1] = 0;
    dp[2] = p;
    dp[3] = 1 - p;
    for (int i = 4; i <= num; ++i)
        dp[i] = p * dp[i-2] + (1-p) * dp[i-3];
    return dp[num];
}

int main() {
    int num = 2;
    float p = 0.1;
    cout << "probability is: " << probab(num, p);
    return 0;
}

আউটপুট

probability is: 0.1
  1. C++-এ এক্সপ্রেশন ট্রি (Expression Tree) উদাহরণসহ

  2. C++-এ ৩n স্লাইস পিজা (Pizza With 3n Slices)

  3. সি++-এ পয়েন্টে পৌঁছানো (Reaching Points)

  4. C++-এ চেসবোর্ডে ঘোড়ার সম্ভাবনা