java 688. Chessboard.java中的骑士概率

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java 688. Chessboard.java中的骑士概率相关的知识,希望对你有一定的参考价值。

class Solution {
    public static final int[][] dir = new int[][] {{-2, -1}, {-1, -2}, {-2, 1}, {-1, 2}, {1, -2}, {2, -1}, {1, 2}, {2, 1}};
    public double knightProbability(int N, int K, int r, int c) {
        if (r < 0 || r >= N || c < 0 || c >= N) return 0.0;
        double[][] dp = new double[N][N];
        dp[r][c] = 1;
        double res = 1;
        for (int k = 0; k < K; k++) {
            double[][] temp = new double[N][N];
            res = 0;
            for (int i = 0; i < N; i++) {
                for (int j = 0; j < N; j++) {
                    for (int[] d : dir) {
                        int x = i + d[0];
                        int y = j + d[1];
                        if (x >= 0 && x < N && y >= 0 && y < N && dp[x][y] > 0) {
                            temp[i][j] += 0.125 * dp[x][y];
                            res += 0.125 * dp[x][y];
                        }
                    }
                }
            }
            dp = temp;
        }
        
        return res;
    }
}

以上是关于java 688. Chessboard.java中的骑士概率的主要内容,如果未能解决你的问题,请参考以下文章

554.488/688   应用数学计算

前端面试每日 3+1 —— 第688天

688. Knight Probability in Chessboard

!688. Knight Probability in Chessboard

CodeForces 688A Opponents (水题)

LeetCode——688. Knight Probability in Chessboard