| 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
 
- }
 
 
  |