骑士在棋盘上的概率(递归)
这道题使用递归思想虽然代码较简洁,但会出现大量的重复计算,但还是想把这种思路展示给大家:
class Solution {
public://vector<int> dirs = {{-2,1},{-1,2},{1,2},{2,1},{2,-1},{1,-2},{-1,-2},{-2,-1}};double knightProbability(int n, int k, int row, int column) {return (double)process(n, k, row, column)/pow(8,k);}long process(int n, int k, int row, int column){if(row<0||column<0||row>=n||column>=n){return 0;}if(k==0){return 1;}long d1 = process(n, k-1, row-2, column+1);long d2 = process(n, k-1, row-1, column+2);long d3 = process(n, k-1, row+1, column+2);long d4 = process(n, k-1, row+2, column+1);long d5 = process(n, k-1, row+2, column-1);long d6 = process(n, k-1, row+1, column-2);long d7 = process(n, k-1, row-1, column-2);long d8 = process(n, k-1, row-2, column-1);return d1 + d2 + d3 + d4 + d5 + d6 + d7 + d8;}
};
在n和k比较大的时候,栈会溢出,因此要转换思路使用动态规划求解,力扣上有官方题解,这里就不在重复了。
骑士在棋盘上的概率(递归)相关推荐
- LeetCode第688题 骑士在棋盘上的概率
LeetCode第688题 骑士在棋盘上的概率 题目 在一个 n x n 的国际象棋棋盘上,一个骑士从单元格 (row, column) 开始,并尝试进行 k 次移动.行和列是 从 0 开始 的,所以 ...
- leetcode算法题--骑士在棋盘上的概率★
原题链接:https://leetcode-cn.com/problems/knight-probability-in-chessboard/ 动态规划,这种题目的想法都是逆向思维,题目问从一个点出发 ...
- LeetCode 688. “马”在棋盘上的概率(DP)
文章目录 1. 题目 2. 解题 1. 题目 已知一个 NxN 的国际象棋棋盘,棋盘的行号和列号都是从 0 开始.即最左上角的格子记为 (0, 0),最右下角的记为 (N-1, N-1). 现有一个 ...
- leetcode - 688. “马”在棋盘上的概率
688. "马"在棋盘上的概率 -------------------------------------------- 已知一个 NxN 的国际象棋棋盘,棋盘的行号和列号都是从 ...
- LeetCode 688. “马”在棋盘上的概率
688. "马"在棋盘上的概率 已知一个 NxN 的国际象棋棋盘,棋盘的行号和列号都是从 0 开始.即最左上角的格子记为 (0, 0),最右下角的记为 (N-1, N-1). 现有 ...
- 【精】LintCode领扣算法问题答案:1084. “马”在棋盘上的概率
1084. "马"在棋盘上的概率 描述 已知一个 NxN 的国际象棋棋盘,棋盘的行号和列号都是从 0 开始.即最左上角的格子记为 (0, 0),最右下角的记为 (N-1, N-1) ...
- leetcode 688. Knight Probability in Chessboard | 688. “马”在棋盘上的概率(dp,记忆化搜索)
题目 https://leetcode.com/problems/knight-probability-in-chessboard/ 题解 左神讲过类似问题: 给定5个参数,N,M,row,col,k ...
- 动态规划-打败怪兽的概率(java)
打败怪兽的概率 打败怪兽的概率 暴力递归 代码演示 动态规划 代码演示 动态规划专题 打败怪兽的概率 给定3个参数,N,M,K 怪兽有N滴血, 等着英雄来砍自己 英雄每一次打击, 都会让怪兽流失[0~ ...
- Knight On the Chessboard
Leetcode 688: 骑士在棋盘上的概率 Definition: 思路 由于刷题尹始对DP和DFS之类的问题还没有什么概念,看到题目第一想法就是直接正向求解,在使用递归实现基本问题的求解之后发现 ...
最新文章
- java实现用户登录注册功能(用集合框架来实现)
- WannaCry的UWP版,哈哈哈
- Redis详解(八)------ 主从复制
- T- SQL性能优化详解
- 卡特兰数(简单说说)
- CNN 反向传播推导
- LeetCode 39. 组合总和(回溯+剪枝)
- python为什么叫爬虫-可以写爬虫的那么多,为什么只有python火了?
- 机器学习入门06 - 训练集和测试集 (Training and Test Sets)
- c语言四个人中有一个人是小偷,涛涛学BASIC逻辑判断
- 用matlab编写驻波图,用驻波法测声速的Matlab模拟
- 多线程:synchronized关键字解析
- 参加江大白手把手教你-----AidLux智慧安防AI训练营
- PT_常见的连续型分布/均匀分布/指数分布/柯西分布/正态分布
- linux手机纠错软件,纠错神笔Lernstift:让你远离拼写错误
- 用计算机做动画效果,ps制作眨眼效果,用ps制作眨眼动画效果
- 鸿蒙系统翻车了,华为鸿蒙系统“翻车了”?被质疑抄袭安卓11系统,事实并非如此...
- 最实用的网上赚钱方法:这个方法真的很实用哦!
- 【Mysql SQLZOO练习命令练习】
- 脚下,梦開始的地方——七月总结
热门文章
- 改善睡眠的简单方法,几个小技巧不妨一试
- 用什么软件可以记录并提醒每天的工作任务?
- 深度揭秘阿里云函数计算异步任务能力
- iphone横竖屏切换,旋转屏幕
- No JSON object could be decoded
- 部分选主元matlab,列选主元的高斯消去法-matlab
- 橘子与萝卜同食容易导致甲状腺肿(图)
- 今日头条,企鹅号,大鱼号,百家号,做搬运视频还赚钱吗?
- 九宫格一条线连起来_9个圆圈用4条线连起来-九个点用四条线连接-数学-霍甲心同学...
- JAVA实现手机短信验证码在指定有效的时间里校验