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

मैट्रिक्स संभावना प्रश्न


यहां हम एक मैट्रिक्स संभावना समस्या देखेंगे। हमारे पास एक आयताकार मैट्रिक्स है। हम वर्तमान सेल से चार दिशाओं में समान संभावना के साथ जा सकते हैं। ये चार दिशाएं बाएं, दाएं, ऊपर और नीचे हैं। हमें M[i, j] स्थिति से N चालों के बाद संभावना की गणना करनी है।

यहां हम DFS से संबंधित कुछ करेंगे। हम वर्तमान कक्ष से चार संभावित कक्षों में पुनरावर्ती रूप से पार करेंगे। फिर हम एक कम चाल के साथ संभावना की गणना करेंगे। चूंकि चारों दिशाओं में समान संभावना है, इसलिए प्रत्येक दिशा कुल संभावना का 0.25 योगदान देगी। यदि हम मैट्रिक्स सीमा पार करते हैं, तो हम 0 लौटाएंगे, और जब N चाल पूरी हो जाएगी तो 1 लौटाया जाएगा। आइए एल्गोरिदम देखें ताकि विचार मिल सके।

एल्गोरिदम

matProb(m, n, x, y, N)

Begin   if x,y is not in matrix boundary m, n, then return 0   if N is 0 , then return 1   prob := 0   prob := prob + matProb(m, n, x-1, y, N-1) * 0.25   prob := prob + matProb(m, n, x+1, y, N-1) * 0.25   prob := prob + matProb(m, n, x, y+1, N-1) * 0.25   prob := prob + matProb(m, n, x, y-1, N-1) * 0.25   return prob End

उदाहरण

#include using namespace std; bool isSafe(int x, int y, int m, int n) { //function to check whether (x,y)     is in matrix or not     if(x >= 0 && x < m && y >= 0 && y < n){         return true;     }     return false; } double matProb(int m, int n, int x, int y, int N) {     if (!isSafe(x, y, m, n)) //if coundary is crossed         return 0.0;     if (N == 0) //when N is 0, or N is completed, return 1         return 1.0;     double probability = 0.0;     probability += matProb(m, n, x - 1, y, N - 1) * 0.25; //move left     probability += matProb(m, n, x, y + 1, N - 1) * 0.25; //move up     probability += matProb(m, n, x + 1, y, N - 1) * 0.25; //move right     probability += matProb(m, n, x, y - 1, N - 1) * 0.25; //move down     return probability; } int main() {     int m = 7, n = 8;     int x = 1, y = 1;     int N = 4;     cout << "Matrix Probability is " << matProb(m, n, x, y, N); }

आउटपुट

Matrix Probability is 0.664062

  1. C प्रोग्रामिंग में मैट्रिक्स को स्नेक पैटर्न में प्रिंट करना C प्रोग्रामिंग में मैट्रिक्स को स्नेक पैटर्न में प्रिंट करना

    nxn आकार का एक ऐरे दिया गया है, प्रोग्राम को ऐरे के एलिमेंट्स को स्नेक पैटर्न में प्रिंट करना है बिना उनकी मूल स्थानों में कोई बदलाव किए। उदाहरण इनपुट: arr[]= 100 99 98 97 93 94 95 96 92 91 90 89 85 86 87 88 आउटपुट: 100 99 98 97 96 95 94 93 92 91 90 89 88 87 86 85 प्रोग्राम मैट्रिक्स की प्

  1. C++ में शतरंज बोर्ड पर घोड़े की संभावना C++ में शतरंज बोर्ड पर घोड़े की संभावना

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

  1. - पायथन में मैट्रिक्स ट्रांसपोज़

    मैट्रिक्स ट्रांसपोज़ का अर्थ है पंक्तियों को कॉलम और कॉलम को पंक्तियों में बदलना। उदाहरण # मूल मैट्रिक्स (3x2) x = [[1, 2], [3, 4], [5, 6]] # ट्रांसपोज़ (2x3) x1 = [[1, 3, 5], [2, 4, 6]] विधि 1: नेस्टेड लूप (क्लासिक) x = [[1, 2], [3, 4], [5, 6]] rows = len(x) cols = len(x[0]) res