日常大跃进,力扣688题,听大师讲图一乐。自己用钻木取火的精神和杯水车薪的实力算出来了当N=5,k=2,x=2,y=2时的正确解,只能说是听懂题目了......
class Solution:
def knightProbability(self, n: int, k: int, row: int, column: int) -> float:
dp = [[[0] * n for _ in range(n)] for _ in range(k + 1)]
for step in range(k + 1):
for i in range(n):
for j in range(n):
if step == 0:
dp[step][i][j] = 1
else:
for di, dj in ((-2, -1), (-2, 1), (2, -1), (2, 1), (-1, -2), (-1, 2), (1, -2), (1, 2)):
ni, nj = i + di, j + dj
if 0 <= ni < n and 0 <= nj < n:
dp[step][i][j] += dp[step - 1][ni][nj] / 8
return dp[k][row][column]
作者:LeetCode-Solution
来源:力扣(LeetCode)的官方答案
然后我加了点代码想run一下,也wrong了,还没搞懂为什么,先放在这里明天解决。
过了几分钟改对了: