C 语言中的矩阵概率问题?

server side programmingprogramming

矩阵概率问题计算元素在采取 N 步和任意方向后是否在给定矩阵内的概率。这意味着我们需要找出元素即使在任意方向上移动 N 个位置后也不会超出矩阵范围的概率。

在此问题中,我们可以自由地向四个方向(左、右、上、下)移动矩阵元素。移动元素的概率相同,为 0.25 或 1/4。

如果元素超出范围,程序将返回 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("移动概率为 %lf", Probability(m, n, i, j, N));
   return 0;
}

输出

移动概率为 0.738281

相关文章