Rumah >pembangunan bahagian belakang >C++ >Masalah kebarangkalian matriks?
Di sini kita akan melihat masalah kebarangkalian matriks. Kami mempunyai matriks segi empat tepat. Kita boleh bergerak dalam empat arah dari sel semasa dengan kebarangkalian yang sama. Empat arah adalah kiri, kanan, atas, dan bawah. Kami ingin mengira kebarangkalian selepas N bergerak bermula dari kedudukan M[i,j].
Di sini kita akan melakukan beberapa perkara yang berkaitan dengan DFS. Kami akan melintasi empat bilik yang mungkin secara rekursif bermula dari bilik semasa. Kemudian kami mengira kebarangkalian mengambil satu langkah yang kurang. Oleh kerana empat arah mempunyai kebarangkalian yang sama, setiap arah akan menyumbang 0.25 daripada jumlah kebarangkalian. Kami akan mengembalikan 0 jika sempadan matriks dilalui dan 1 apabila N bergerak selesai. Mari lihat algoritma untuk mendapatkan idea ini.
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<iostream> 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); }
Atas ialah kandungan terperinci Masalah kebarangkalian matriks?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!