একজন ব্যক্তি "A" একটি প্রারম্ভিক অবস্থান X =0 থেকে হাঁটছে, কাজটি হল সঠিক X =সংখ্যায় পৌঁছানোর সম্ভাবনা খুঁজে বের করা, যদি সে 2 বা 3 নিতে পারে পদক্ষেপ ধাপ দৈর্ঘ্য 2 এর সম্ভাব্যতা অর্থাৎ P, ধাপ 3 এর সম্ভাব্যতা হল 1 - P।
ইনপুট
num = 5, p = 0.2
আউটপুট
0.32
ব্যাখ্যা
There can be 2 ways to reach num, i.e, 5 2+3 with probability 0.2 * 0.8 = 0.16 3+2 with probability 0.8 * 0.2 = 0.16 So, total probability will be 0.16 + 0.16 = 0.32
ইনপুট
num = 2, p = 0.1
আউটপুট
0.1
সমস্যা সমাধানের জন্য নিচের পদ্ধতিটি ব্যবহার করা হয়েছে
আমরা সমস্যা সমাধানের জন্য গতিশীল প্রোগ্রামিং পদ্ধতি ব্যবহার করব।
সমাধানে আমরা −
করব-
একটি সম্ভাব্যতা বিন্যাস ঘোষণা করুন যার আকার num+1 এবং এর মান নির্ধারণ করুন, Set probab[0] =1, Set probab[1] =0, Set probab[2] =p, Set probab[3] =1 – p
-
i 0 থেকে num পর্যন্ত পুনরাবৃত্তি করুন, যখন এর মান বৃদ্ধি করুন
-
প্রতিটি i এর জন্য, probab[i] =(p)*probab[i - 2] + (1 - p) * probab[i - 3]
-
probab[সংখ্যা]
ফেরত দিন -
প্রিন্ট ফলাফল।
অ্যালগরিদম
Start Step 1→ declare function to calculate probability of reaching a point with 2 or 3 steps at a time float probab(int num, float p) Declare double probab[num + 1] `Set probab[0] = 1 Set probab[1] = 0 Set probab[2] = p Set probab[3] = 1 – p Loop For int i = 4 and i <= num and ++i Set probab[i] = (p)*probab[i - 2] + (1 - p) * probab[i - 3] End return probab[num] Step 2→ In main() Declare int num = 2 Declare float p = 0.1 Call probab(num, p) Stop
উদাহরণ
#include <bits/stdc++.h> using namespace std; //function to calculate probability of reaching a point with 2 or 3 steps at a time float probab(int num, float p){ double probab[num + 1]; probab[0] = 1; probab[1] = 0; probab[2] = p; probab[3] = 1 - p; for (int i = 4; i <= num; ++i) probab[i] = (p)*probab[i - 2] + (1 - p) * probab[i - 3]; return probab[num]; } int main(){ int num = 2; float p = 0.1; cout<<"probability is : "<<probab(num, p); return 0; }
আউটপুট
উপরের কোডটি চালালে এটি নিম্নলিখিত আউটপুট −
উৎপন্ন করবেprobability is : 0.1