矩阵概率问题计算经过N个步长和任意方向后元素是否将在给定矩阵内的概率。这意味着我们需要找出即使在任何方向上移动了N个位置后,元素仍未超出矩阵范围的可能性是多少。
在这个问题中,我们可以自由地在所有四个方向(左,右,上,下)上移动矩阵元素。并且移动元素的概率相同为0.25或1/4。
如果元素退出,程序将返回0,否则返回0。
#include <stdio.h>
int isSafe(int x, int y, int m, int n) {
return (x >= 0 && x < m &&
y >= 0 && y < n);
}
double Probability(int m, int n, int x, int y, int N) {
if (!isSafe(x, y, m, n))
return 0.0;
if (N == 0)
return 1.0;
double prob = 0.0;
prob += Probability(m, n, x - 1, y, N - 1) * 0.25;
prob += Probability(m, n, x, y + 1, N - 1) * 0.25;
prob += Probability(m, n, x + 1,y, N - 1) * 0.25;
prob += Probability(m, n, x, y - 1, N - 1) * 0.25;
return prob;
}
int main() {
int m = 5, n = 5;
int i = 2, j = 1;
int N = 4;
printf("Probability of moving is %lf", Probability(m, n, i, j, N));
return 0;
}输出结果
Probability of moving is 0.738281