leetcode:骑士在棋盘上的概率
无脑bfs超时了:
class Solution:def knightProbability(self, n: int, k: int, row: int, column: int) -> float:# 外面也要定义一下global cntcnt = 0# 估计得用bfsdef bfs(r, c, times):global cntif times == k and 0 <= r < n and 0 <= c < n:cnt += 1returnif r < 0 or r >= n or c < 0 or c >= n or times >= k:returnX = [-2, -1, 1, 2, 2, 1, -1, -2]Y = [1, 2, 2, 1, -1, -2, -2, -1]for i in range(8):nextR = r + X[i]nextC = c + Y[i]if 0 <= nextR < n and 0 <= nextC < n:bfs(nextR, nextC, times + 1)bfs(row, column, 0)return cnt / (8 ** k)
dp更快
class Solution:def knightProbability(self, n: int, k: int, row: int, column: int) -> float:# 三维dp 次数+行+列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] = 1else:for di, dj in ((-2, -1), (-2, 1), (2, -1), (2, 1), (-1, -2), (-1, 2), (1, -2), (1, 2)):# ni, nj 是前一步的位置,这一步到了i,jni, nj = i + di, j + dj# 若上一步合法if 0 <= ni < n and 0 <= nj < n:dp[step][i][j] += dp[step - 1][ni][nj] / 8return dp[k][row][column]
总结:
这种bfs超时就dp吧,dp的话三维,然后初始步和基于上一步,上一步肯定是八个位置,然后判断是否合法即可
leetcode:骑士在棋盘上的概率相关推荐
- LeetCode第688题 骑士在棋盘上的概率
LeetCode第688题 骑士在棋盘上的概率 题目 在一个 n x n 的国际象棋棋盘上,一个骑士从单元格 (row, column) 开始,并尝试进行 k 次移动.行和列是 从 0 开始 的,所以 ...
- leetcode算法题--骑士在棋盘上的概率★
原题链接:https://leetcode-cn.com/problems/knight-probability-in-chessboard/ 动态规划,这种题目的想法都是逆向思维,题目问从一个点出发 ...
- 骑士在棋盘上的概率(递归)
这道题使用递归思想虽然代码较简洁,但会出现大量的重复计算,但还是想把这种思路展示给大家: class Solution { public://vector<int> dirs = {{-2 ...
- LeetCode 688. “马”在棋盘上的概率(DP)
文章目录 1. 题目 2. 解题 1. 题目 已知一个 NxN 的国际象棋棋盘,棋盘的行号和列号都是从 0 开始.即最左上角的格子记为 (0, 0),最右下角的记为 (N-1, N-1). 现有一个 ...
- leetcode - 688. “马”在棋盘上的概率
688. "马"在棋盘上的概率 -------------------------------------------- 已知一个 NxN 的国际象棋棋盘,棋盘的行号和列号都是从 ...
- leetcode 688. Knight Probability in Chessboard | 688. “马”在棋盘上的概率(dp,记忆化搜索)
题目 https://leetcode.com/problems/knight-probability-in-chessboard/ 题解 左神讲过类似问题: 给定5个参数,N,M,row,col,k ...
- LeetCode 688. “马”在棋盘上的概率
688. "马"在棋盘上的概率 已知一个 NxN 的国际象棋棋盘,棋盘的行号和列号都是从 0 开始.即最左上角的格子记为 (0, 0),最右下角的记为 (N-1, N-1). 现有 ...
- 【精】LintCode领扣算法问题答案:1084. “马”在棋盘上的概率
1084. "马"在棋盘上的概率 描述 已知一个 NxN 的国际象棋棋盘,棋盘的行号和列号都是从 0 开始.即最左上角的格子记为 (0, 0),最右下角的记为 (N-1, N-1) ...
- LeetCode 1227. 飞机座位分配概率(DP+数学归纳法)
1. 题目 有 n 位乘客即将登机,飞机正好有 n 个座位.第一位乘客的票丢了,他随便选了一个座位坐下. 剩下的乘客将会: 如果他们自己的座位还空着,就坐到自己的座位上, 当他们自己的座位被占用时,随 ...
- LeetCode 398. 随机数索引(概率)
1. 题目 给定一个可能含有重复元素的整数数组,要求随机输出给定的数字的索引. 您可以假设给定的数字一定存在于数组中. 注意: 数组大小可能非常大. 使用太多额外空间的解决方案将不会通过测试. 示例: ...
最新文章
- linux和android开发链接
- boost::search_n相关的测试程序
- Android控件Gallery3D效果
- 来自1976,Hinton写的第一篇论文火了:胶囊网络,是40年前的胶囊?
- AR:Unity与iOS交互(入门篇)
- 2015手机网民超10亿是什么景象?
- JMS学习(三)JMS 消息结构之属性及消息体详解
- BIGEMAP APP离线卫星地图数据应用
- 软件观念革命:交互设计精髓_电子沙盘设计主要分为哪几种?
- 寻找春天 九宫格日记-2013.01.12
- 层次分析法例题 matlab,层次分析法的MATLAB实现
- 仿bing搜索页面制作(大概)
- java l老毕_她被毕福剑一手捧红,还给她牵线煤老板,老毕落难时她的做法超赞...
- Elasticsearch学习(二)————搜索
- python爬取微信小程序(实战篇)_python爬取猫眼的前100榜单并展示在微信小程序
- JavaScript和Node.js的关系
- 年纪轻轻竟脱发?头发到底该如何挽回?
- 大规模复杂变电站巡检机器人分层路径规划
- 【VFP] MS Virual FoxPro 9.0 | 常用命令 | VFP
- Eclipse Debug setp into无法进入源码中的解决办法
热门文章
- 软件著作权提交源代bai码格式_软件著作权使用说明书字体要求-软件著作权提交源代码格式要求...
- Pytorch学习笔记(7)——模型放GPU上经常报CUDA错该怎么办
- windows批量上传文件到linux,windows上传文件到linux云服务器上
- 串口IEC103协议
- uni-app获取车牌号
- Java 全栈知识体系( PDF 可下载)
- 通达信快捷功能键大全
- Java面试题之:分布式缓存
- UE4官方文档UI学习:2.UMG 创建主菜单
- 微弱信号检测matlab,微弱信号检测