当前位置: 首页 > news >正文

Leetcode. 688骑士在棋盘上的概率

题目描述

原题链接:Leetcode. 688骑士在棋盘上的概率

解题思路

多元dp

dp[step][i][j])定义为从(i, j)出发,走step步之后骑士还在棋盘上的概率。

  • 如果 ( i , j ) (i,j) (i,j)不在棋盘上,即非 0 < = i < n 0<=i<n 0<=i<n或者非 0 < = j < n 0<=j<n 0<=j<n,那么此时概率一定为 0 0 0
  • 如果 s t e p = 0 step=0 step=0,那么这个时候骑士已经无需再走,而且经过上面的判断,骑士此时一定在棋盘上,所以经过 0 0 0步之后骑士一定还在棋盘上,此时概率为 1 1 1
  • 如果不满足上述的条件,那么此时考虑 d p [ s t e p ] [ i ] [ j ] dp[step][i][j] dp[step][i][j] d p [ s t e p − 1 ] [ i − d x ] [ j − d y ] dp[step-1][i-dx][j-dy] dp[step1][idx][jdy]转化而来,其中 d x dx dx d y dy dy是骑士能走的在 x x x方向和 y y y方向上的位移大小。由题意可知一共有八个方向可以到达 ( i , j ) (i,j) (i,j),那么从每个点过来的概率就是 1 8 \frac{1}{8} 81。也就是说 d p [ s t e p ] [ i ] [ j ] = ∑ 1 8 d p [ s t e p − 1 ] [ i − d x ] [ j − d y ] dp[step][i][j]=\sum \frac{1}{8}dp[step-1][i-dx][j-dy] dp[step][i][j]=81dp[step1][idx][jdy]

python代码

class Solution:def knightProbability(self, n: int, k: int, row: int, column: int) -> float:dx = [-1,-2,-2,-1,1,2,2,1]dy = [-2,-1,1,2,2,1,-1,-2]@cachedef dfs(k, i, j):if not (0 <= i < n and 0 <= j < n):return 0if k == 0:return 1.return sum(dfs(k-1, i+xx, j+yy) for xx,yy in zip(dx, dy))/8 return dfs(k, row, column)
http://www.lryc.cn/news/499951.html

相关文章:

  • TCP/IP 协议栈高效可靠的数据传输机制——以 Linux 4.19 内核为例
  • Ubuntu22.04搭建LAMP环境(linux服务器学习笔记)
  • 鸿蒙面试---1208
  • java基础教程第16篇( 正则表达式)
  • Docker部署的gitlab升级的详细步骤(升级到17.6.1版本)
  • 【如何制定虚拟货币的补仓策略并计算回本和盈利】
  • 给图像去除水印攻
  • Linux之封装线程库和线程的互斥
  • PH热榜 | 2024-12-08
  • LeetCode刷题day20——贪心
  • CCF编程能力等级认证GESP—C++3级—20241207
  • Microi 吾码:大数据浪潮中的智能领航者
  • Lua语言入门 - Lua 数组
  • gulp应该怎么用,前端批量自动化替换文件
  • 石岩湿地公园的停车场收费情况
  • A7157 基于Java+SSM+mysql+jsp的医院挂号系统的设计与实现 源码 文档 配置 全套资料
  • 数据处理与统计分析——11-Pandas-Seaborn可视化
  • 【计算机网络】实验13:运输层端口
  • STL之适配器(adapters)_下
  • 基于51单片机64位病床呼叫系统设计( proteus仿真+程序+设计报告+原理图+讲解视频)
  • 安装 Zookeeper 和 Kafka
  • 操作系统输入输出系统知识点
  • C语言控制语句与案例
  • JVM的内存布局
  • aws codepipeline + github + sonarqube + jenkins实践CI/CD
  • mistralai 部署笔记
  • Java——异常机制(上)
  • 坐标系,向量_batch及向量点乘部分知识
  • 【计算机网络】期末速成(2)
  • 【设计模式】结构型设计模式总结之代理模式、装饰模式、外观模式、享元模式