| 1234567891011121314151617181920212223242526272829303132333435 | var detX = []int{1, -1, 1, -1, 2, -2, 2, -2}var detY = []int{2, 2, -2, -2, 1, 1, -1, -1}func knightProbability(N int, K int, r int, c int) float64 {	dp := make([][]float64, N)	for i := range dp {		dp[i] = make([]float64, N)	}	dp[r][c] = 1.0	for i := 0; i < K; i++ {		ndp := make([][]float64, N)		for j := range ndp {			ndp[j] = make([]float64, N)		}		for y := 0; y < N; y++ {			for x := 0; x < N; x++ {				for j := 0; j < 8; j++ {					ny, nx := y+detY[j], x+detX[j]					if ny < 0 || N <= ny || nx < 0 || N <= nx {						continue					}					ndp[y][x] += dp[ny][nx] / 8.0				}			}		}		dp = ndp	}	prob := 0.0	for i := range dp {		for _, p := range dp[i] {			prob += p		}	}	return prob}
 |