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

C++ में N चालों के बाद पॉइंट N से सभी बिंदुओं तक पहुंचने की संभावना खोजें


मान लीजिए हमारे पास एक संख्या N है जो संख्या रेखा पर व्यक्ति की प्रारंभिक स्थिति को दर्शाती है। हमारे पास L भी है जो व्यक्ति के बाएं जाने की संभावना है। हमें N चालें पूरी करने के बाद संख्या रेखा पर सभी बिंदुओं तक पहुंचने की संभावना खोजनी है। प्रत्येक चाल या तो बाएं या दाएं हो सकती है।

उदाहरण के लिए, यदि इनपुट n = 2, l = 0.5 है, तो आउटपुट [0.25, 0, 0.5, 0, 0.25] होगा।

इसे हल करने के लिए, हम निम्न चरणों का पालन करेंगे:

  • हाई := 1 - लो
  • आकार n+1 x 2*n+1 का एक ऐरे A परिभाषित करें और 0 से भरें
  • A[1][n + 1] = हाई, A[1][n - 1] = लो
  • i := 2 से n तक लूप करें:
    • j := 1 से 2*n तक लूप करें: A[i][j] := A[i][j] + (A[i - 1][j - 1] * हाई)
    • j := 2*n - 1 से 0 तक घटते हुए लूप करें: A[i][j] := A[i][j] + (A[i - 1][j + 1] * लो)
  • i := 0 से 2*n तक लूप करें: A[n][i] प्रदर्शित करें

उदाहरण

बेहतर समझ के लिए निम्न कार्यान्वयन देखें:

#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); }

इनपुट

2, 0.6

आउटपुट

0.36 0 0.48 0 0.16

  1. C++ का उपयोग करके दिए गए बिंदुओं से संभावित चतुर्भुजों की संख्या ज्ञात करें C++ का उपयोग करके दिए गए बिंदुओं से संभावित चतुर्भुजों की संख्या ज्ञात करें

    यूक्लिडियन प्लेन ज्यामिति में एक चतुर्भुज चार शीर्षों और चार किनारों के साथ एक बहुभुज बनाता है। नाम 4-gon आदि। चतुर्भुजों के अन्य नामों में शामिल हैं और कभी-कभी उन्हें वर्ग, डिस्प्ले स्टाइल आदि के रूप में भी जाना जाता है।इस लेख में, हम दिए गए बिंदुओं से संभावित चतुर्भुजों की संख्या ज्ञात करने के दृष

  1. - C++ प्रोग्राम: दी गई स्ट्रिंग में "1(0+)1" के सभी पैटर्न ज्ञात करना

    मान लें किसी स्ट्रिंग में 1(0+)1 जैसे पैटर्न हैं। जहां (0+) 1 की गैर-खाली लगातार घटनाओं को इंगित करता है। हमें सभी पैटर्न ज्ञात करने हैं। पैटर्न ओवरलैप हो सकते हैं। स्ट्रिंग आवश्यक रूप से बाइनरी स्ट्रिंग नहीं है। यह केवल अंक और लोअरकेस वर्ण रख सकती है। मान लें स्ट्रिंग 1101001 की तरह है, तो ऐसे दो प

  1. - C++ में मूल बिंदु के निकटतम K बिंदु ढूंढना

    मान लीजिए हमारे पास बिंदुओं का एक समुच्चय है। हमारा कार्य K बिंदुओं को ढूंढना है जो मूल बिंदु के निकटतम हैं। मान लीजिए बिंदु (3, 3), (5, -1) और (-2, 4) हैं। तब निकटतम दो (K = 2) बिंदु (3, 3), (-2, 4) हैं।इस समस्या को हल करने के लिए, हम बिंदुओं की सूची को उनकी यूक्लिडियन दूरी के आधार पर सॉर्ट करेंगे,