leetcode688. 骑士在棋盘上的概率(java)

news2024/11/8 2:51:16

骑士在棋盘上的概率

  • leetcode688. 骑士在棋盘上的概率
    • 题目描述
  • 解题思路
  • 代码演示
  • 动态规划专题

leetcode688. 骑士在棋盘上的概率

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/knight-probability-in-chessboard

题目描述

在一个 n x n 的国际象棋棋盘上,一个骑士从单元格 (row, column) 开始,并尝试进行 k 次移动。行和列是 从 0 开始 的,所以左上单元格是 (0,0) ,右下单元格是 (n - 1, n - 1) 。
象棋骑士有8种可能的走法,如下图所示。每次移动在基本方向上是两个单元格,然后在正交方向上是一个单元格。

在这里插入图片描述每次骑士要移动时,它都会随机从8种可能的移动中选择一种(即使棋子会离开棋盘),然后移动到那里。
骑士继续移动,直到它走了 k 步或离开了棋盘。
返回 骑士在棋盘停止移动后仍留在棋盘上的概率 。

示例 1:
输入: n = 3, k = 2, row = 0, column = 0
输出: 0.0625
解释: 有两步(到(1,2),(2,1))可以让骑士留在棋盘上。
在每一个位置上,也有两种移动可以让骑士留在棋盘上。
骑士留在棋盘上的总概率是0.0625。

示例 2:
输入: n = 1, k = 0, row = 0, column = 0
输出: 1.00000

提示:
1 <= n <= 25
0 <= k <= 100
0 <= row, column <= n - 1

解题思路

递归去解决这个问题。八个方向递归。
每次走步数减一。
base case .步数为0 时,和走出棋盘时,都停止,

注意:
直接暴力递归,会超时,跑不过去,需要加上缓存,

代码演示

 public double knightProbability(int n, int k, int row, int column) {
        double[][][]dp = new double[n][n][k+1];
          
        return process(n,k,row,column,dp);    
    }


    public double process(int n ,int k,int row,int column,double[][][]dp){
    		//抛出棋盘外,直接停止
        if(row >= n || row < 0 || column >= n || column < 0){
            return 0.0;
        }
        //缓存有值时 从缓存里拿值
        if( dp[row][column][k] != 0){
            return dp[row][column][k];
        }
        //步数走完,走出棋盘外的情况已经在上面拦截,到这里的都是棋盘内的,直接返回1
        if(k == 0){
            return 1.0;
        }
        double ori = 0.125;
        //八个方向递归
        double p1 = ori * process(n,k-1,row-2,column+1,dp);
        p1 += ori * process(n,k-1,row-1,column+2,dp);
        p1 += ori * process(n,k-1,row+1,column+2,dp);
        p1 += ori * process(n,k-1,row+2,column+1,dp);

        p1 += ori * process(n,k-1,row+2,column-1,dp);
        p1 += ori * process(n,k-1,row+1,column-2,dp);
        p1 += ori * process(n,k-1,row-1,column-2,dp);
        p1 += ori * process(n,k-1,row-2,column-1,dp);
        dp[row][column][k] = p1;
        return p1;
    }

动态规划专题

leetcode.486. 预测赢家

leetcode1143. 最长公共子序列

最长回文子序列

象棋里马走到指定位置的方法数

最小路径和

凑零钱.钱币的组合有多少种

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/624585.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【源码篇】基于ssm+vue+微信小程序的医疗科普小程序

系统介绍 这是一个ssmvue微信小程序的医疗科普小程序&#xff0c;分为pc端和微信小程序端 pc端包括&#xff1a;管理员角色和学生角色。 管理员拥有&#xff1a;学生管理、科普知识管理、论坛管理、收藏管理、试卷管理、留言板管理、试题管理、系统管理、考试管理 学生端拥…

AI实战营第二期 第五节 《目标检测与MMDetection》——笔记6

文章目录 摘要主要特性 常用概念框、边界框交并比 (loU)感受野有效感受野置信度 目标检测的基本思路难点滑框在特征图进行密集计算边界框回归基于锚框VS无锚框NMS&#xff08;非极大值抑制&#xff09;使周密集预测模型进行推理步骤如何训练密集预测模型的训练匹配的基本思路密…

C++ 教程(01)

C 教程 C 是一种高级语言&#xff0c;它是由 Bjarne Stroustrup 于 1979 年在贝尔实验室开始设计开发的。C 进一步扩充和完善了 C 语言&#xff0c;是一种面向对象的程序设计语言。C 可运行于多种平台上&#xff0c;如 Windows、MAC 操作系统以及 UNIX 的各种版本。 本教程通过…

节省90%编译时间,这是字节跳动开源的基于Rust的前端构建工具

Rspack 是一个基于 Rust 的高性能构建引擎&#xff0c;它可以与 Webpack 生态系统交互&#xff0c;并提供更好的构建性能。 在处理具有复杂构建配置的巨石应用时&#xff0c;Rspack 可以提供 5~10 倍的编译性能提升。 字节跳动将 Rspack 开源后&#xff0c;它在 GitHub 上已有 …

Bert+FGSM/PGD实现中文文本分类(Loss=0.5L1+0.5L2)

任务目标&#xff1a;在使用FGSM/PGD来训练Bert模型进行文本分类&#xff0c;其实现原理可以简单概括为以下几个步骤&#xff1a; 对原始文本每个词转换为对应的嵌入向量。将每个嵌入向量与一个小的扰动向量相加&#xff0c;从而生成对抗样本。这个扰动向量的大小可以通过一个超…

2023年牛客网最新版大厂Java八股文面试题总结(覆盖所有面试题考点)

程序员真的是需要将终生学习贯彻到底的职业&#xff0c;一旦停止学习&#xff0c;离被淘汰&#xff0c;也就不远了。 金九银十跳槽季&#xff0c;这是一个千年不变的话题&#xff0c;每到这个时候&#xff0c;很多人都会临阵磨枪&#xff0c;相信不快也光。于是&#xff0c;大…

多业务线下,IT企业如何应对市场经济下行危机?

多业务线下&#xff0c;IT企业如何应对市场经济下行危机&#xff1f; 市场经济下行就像是一辆行驶的车子遇到了坡道&#xff0c;速度开始变慢甚至停下来。在这个情况下&#xff0c;经济的增长变得较为缓慢&#xff0c;消费减少&#xff0c;投资减少&#xff0c;也对企业会带来…

运筹说 第25期 | 对偶理论经典例题讲解

对偶理论是研究线性规划中原始问题与对偶问题之间关系的理论&#xff0c;主要研究经济学中的相互确定关系&#xff0c;涉及到经济学的诸多方面。产出与成本的对偶、效用与支出的对偶&#xff0c;是经济学中典型的对偶关系。 对偶理论中最有力的武器是影子价格&#xff0c;影子…

【MySQL】主从复制部署

文章目录 概述SQL数据库的三大范式 主从复制技术产生原因主从形式原理图主节点 binary log dump 线程从节点I/O线程作用从节点SQL线程作用 复制过程复制模式异步模式&#xff08;mysql async-mode&#xff09;半同步模式(mysql semi-sync)全同步模式 复制机制binlog记录模式GTI…

android frida检测绕过

Frida检测是一种常见的安卓逆向技术&#xff0c;常用于防止应用程序被反向工程。如果您遇到了Frida检测&#xff0c;您可以尝试以下方法来绕过它&#xff1a; 使用Magisk Hide模块&#xff1a;Magisk是一个强大的安卓root工具&#xff0c;它附带了一个Magisk Hide模块&#xff…

二阳大规模来袭,热图地图分析新冠疫情期间的高发地点,掌握防控重点!

一、概述 最近&#xff0c;新冠疫情似乎又要“卷土重来”... 身边逐渐有人传来“二阳”或者“三羊”的消息&#xff0c;网上相关的讨论和报道也变得越来越多。 据「钟南山院士」在大湾区科学论坛上的发言&#xff0c;预测模型seirs显示&#xff0c;第二波新冠疫情已于4月中旬开…

当数据汇聚成海,Excel 表成为我们的航海图,如何在茫茫数据中找到目标?——Excel 表中某个范围内的单元格遍历思路

本篇博客会讲解力扣“2194. Excel 表中某个范围内的单元格”的解题思路&#xff0c;这是题目链接。 先来审题&#xff1a; 以下是输出示例和提示&#xff1a; 这道题的解题思路是&#xff1a;模拟&#xff0c;遍历每一列&#xff0c;某一列遍历完后遍历下一列。 下面我们需…

爆肝整理,性能测试-全链路压测与普通压测区别总结,进阶高级测试...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 抛出一个问题&…

Shell脚本:expect脚本免交互

Shell脚本&#xff1a;expect脚本免交互 expect脚本免交互 一、免交互基本概述&#xff1a;1.交互与免交互的区别&#xff1a;2.格式&#xff1a;3.通过read实现免交互&#xff1a;4.通过cat实现查看和重定向&#xff1a;5.变量替换&#xff1a; 二、expect安装&#xff1a;1.…

Docker Registry部署

之前执行 docker pull的命令都是从 docker hub上拉取的&#xff0c;是docker 公共仓库&#xff0c;如果在公司中使用docker&#xff0c;我们不可能把自己的镜像上传到公共仓库&#xff0c;这个时候就需要一个自己的仓库&#xff08;私有仓库&#xff09;&#xff0c;在局域网之…

usb 驱动

usb 驱动 usb 的基本概念 这个忽略&#xff0c; 基本上usb 是啥都知道 usb 的拓扑结构 usb 是一种主从结构的系统 usb主机由usb主控之器&#xff08;Host Controller)和根集线器&#xff08;Root Hub&#xff09; 构成 usb 主控制器&#xff1a; 主要负责数据处理(就是我…

微信怎么批量自动添加好友?

如何批量加客户资源到微信&#xff0c;怎么加微信好友&#xff0c;这个基本上熟悉的人都会知道。 实际上&#xff0c;你知道所有添加微信好友的方式吗&#xff1f;或者说&#xff0c;你知道如何批量加客户微信吗&#xff1f; 比如说在一定时间内&#xff0c;把你所有的客户资…

AIGC文本生成智能应用(ChatGPT)提示工程师技巧

我是荔园微风&#xff0c;作为一名在IT界整整25年的老兵&#xff0c;今天来看一下AIGC文本生成智能提示工程师技巧。 当你在使用类似于ChatGPT这样的AIGC文本生成智能应用时&#xff0c;有没有想过&#xff0c;你所问的问题中的每一个词语对AIGC文本生成智能应用给你的回答的好…

记忆的助记器|如何使用联想记忆法

联想记忆法&#xff0c;也被称为记忆宫殿技术&#xff0c;已经使用了数千年&#xff0c;其记录可以追溯到古罗马和希腊。虽然现代第二大脑工具抢走了它的一些人气&#xff0c;但联想记忆法仍然是最有效的记忆方法之一。下面是你为什么需要在你的知识管理系统中使用它。 什么是…

比较快捷的设置第三方app 有系统权限和签名

1. app 里面添加 android:sharedUserId"android.uid.system" 2.编译出app.apk ,拷贝到源码目录 里面有很多签名文件 build\target\product\security 3. 拷贝签名工具到这个目录 签名工具原目录 out/host/linux-x86/framework/signapk.jar 4.拷贝需要的库文件到这…