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

C++-এ N মুভ পর N পজিশন থেকে সব পজিশনে পৌঁছানোর প্রোবাবিলিটি


সমস্যা

নাম্বার লাইনে অবস্থান N-এ থেকে শুরু। প্রতিটি মুভে বামে যাওয়ার প্রোবাবিলিটি L، ডানে যাওয়ার 1-L। N মুভ পর নাম্বার লাইনের প্রতিটি পজিশনে পৌঁছানোর প্রোবাবিলিটি বের করুন।

ডাইনামিক প্রোগ্রামিং সমাধান

  • A[i][j] = i মুভ পর পজিশন j-এ থাকার প্রোবাবিলিটি।
  • বেস: A[1][N+1] = 1-L (ডান), A[1][N-1] = L (বাম)।
  • ট্রানজিশন:
    • A[i][j] += A[i-1][j-1] * (1-L) (ডান থেকে আসা)।
    • A[i][j] += A[i-1][j+1] * L (বাম থেকে আসা)।
  • আউটপুট: A[N][*]।

C++ কোড

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

void find_prob(int n, double low) {
    double high = 1 - low;
    double A[n+1][2*n+1] = {{0}};
    A[1][n+1] = high;
    A[1][n-1] = low;
    for (int i=2; i<=n; i++) {
        for (int j=1; j<=2*n; j++)
            A[i][j] += A[i-1][j-1] * high;
        for (int j=2*n-1; j>=0; j--)
            A[i][j] += A[i-1][j+1] * low;
    }
    for (int i=0; i<2*n+1; i++)
        cout << A[n][i] << endl;
}

int main() {
    int n = 2;
    double low = 0.6;
    find_prob(n, low);
}

আউটপুট (n=2, low=0.6)

0.36
0
0.48
0
0.16

অর্থাৎ পজিশন ০, ২, ৪-এ প্রোবাবিলিটি যথাক্রমে ০.৩৬, ০.৪৮, ০.১৬।

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

  2. সি++ প্রোগ্রাম: বৃত্তের ব্যাসের অন্য প্রান্তের কোয়ার্ডিনেট নির্ণয়

  3. সি++ প্রোগ্রাম: দিয়ে থাকা স্ট্রিং-এ "1(0+)1" প্যাটার্নের সব.matches খুঁজে বের করা

  4. C++-এ উদ্ভূত বিন্দু থেকে K সংখ্যক নিকটতম পয়েন্ট বের করা