Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> C++

C++ . में एक बार में 2 या 3 चरणों के साथ एक बिंदु तक पहुँचने की प्रायिकता


एक व्यक्ति "A" प्रारंभिक स्थिति X =0 से चल रहा है, कार्य ठीक X =num तक पहुँचने की प्रायिकता ज्ञात करना है, यदि वह या तो 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 है और इसके मानों को असाइन करें, सेट प्रोब [0] =1, सेट प्रोब [1] =0, सेट प्रोब [2] =पी, सेट प्रोब [3] =1 – पी

  • I को 0 से num तक पुनरावृत्त करें, जबकि इसके मान में वृद्धि करें

  • प्रत्येक i के लिए, probab[i] =(p)*probab[i - 2] + (1 - p) * probab[i - 3]

    सेट करें
  • प्रोबब लौटाएं[संख्या]

  • प्रिंट परिणाम।

एल्गोरिदम

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

  1. सी ++ में उदाहरण के साथ अभिव्यक्ति वृक्ष

    एक्सप्रेशन ट्री एक विशेष प्रकार का बाइनरी ट्री होता है जिसमें ट्री के प्रत्येक नोड में या तो एक ऑपरेटर या ऑपरेंड होता है। लीफ नोड्स पेड़ का एक संचालन . का प्रतिनिधित्व करता है . गैर-पत्ती नोड्स पेड़ का एक ऑपरेटर . का प्रतिनिधित्व करता है । उदाहरण: इंफिक्स एक्सप्रेशन प्राप्त करने के लिए जिस

  1. C++ में 3n स्लाइस के साथ पिज़्ज़ा

    मान लीजिए कि एक पिज्जा है जिसमें अलग-अलग आकार के 3n स्लाइस हैं, मैं और मेरे दो दोस्त पिज्जा के स्लाइस इस प्रकार लेंगे - मैं कोई भी पिज़्ज़ा स्लाइस चुनूंगा। मेरा दोस्त अमल मेरी पसंद की घड़ी की विपरीत दिशा में अगला टुकड़ा उठाएगा। मेरा दोस्त बिमल मेरी पसंद की अगली स्लाइस को दक्षिणावर्त दिशा मे

  1. C++ . में शतरंज की बिसात में नाइट की संभाव्यता

    मान लीजिए कि हमारे पास एक NxN शतरंज की बिसात है, एक शूरवीर r-वें पंक्ति और c-वें स्तंभ से शुरू होता है और ठीक K चाल चलने का प्रयास करता है। यहां पंक्तियों और स्तंभों को 0 अनुक्रमित किया गया है, इसलिए शीर्ष-बाएं वर्ग (0, 0) है, और निचला-दायां वर्ग (N-1, N-1) है। एक शूरवीर एक सेल से 8 अलग-अलग कोशिकाओ