算法体系-23 第二十三节:暴力递归到动态规划(五)

一 求K次打击之后,英雄把怪兽砍死的概率

1.1 描述

给定3个参数,N,M,K

怪兽有N滴血,等着英雄来砍自己

英雄每一次打击,都会让怪兽流失[0~M]的血量

到底流失多少?每一次在[0~M]上等概率的获得一个值

求K次打击之后,英雄把怪兽砍死的概率

1.2 分析 尝试

第一砍可能让他掉0滴血到m滴血,就是0到m的展开,k次的话就是有(1+m)有k个相乘 math.pow(m+1,k)

1.3 代码

    public static double right(int N, int M, int K) {if (N < 1 || M < 1 || K < 1) {return 0;}long all = (long) Math.pow(M + 1, K);long kill = process(K, M, N);return (double) ((double) kill / (double) all);}// 怪兽还剩hp点血// 每次的伤害在[0~M]范围上// 还有times次可以砍// 返回砍死的情况数!public static long process(int times, int M, int hp) {if (times == 0) {return hp <= 0 ? 1 : 0;}//if (hp <= 0) {//return (long) Math.pow(M + 1, times);//}long ways = 0;for (int i = 0; i <= M; i++) {ways += process(times - 1, M, hp - i);}return ways;}

1.4 改动态规划

base条件是当前times==0 ,hp

hp - i 当 hp 剩余血量为0,但是还有3刀的情况那么hp - i就会越界

推表的时候,又出现小于的表的情况就剪支

1.5 动态规划代码

public static double dp1(int N, int M, int K) {if (N < 1 || M < 1 || K < 1) {return 0;}long all = (long) Math.pow(M + 1, K);long[][] dp = new long[K + 1][N + 1];dp[0][0] = 1;for (int times = 1; times <= K; times++) {dp[times][0] = (long) Math.pow(M + 1, times);for (int hp = 1; hp <= N; hp++) {long ways = 0;for (int i = 0; i <= M; i++) {if (hp - i >= 0) {ways += dp[times - 1][hp - i];} else {ways += (long) Math.pow(M + 1, times - 1);}}dp[times][hp] = ways;}}long kill = dp[K][N];return (double) ((double) kill / (double) all);}

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

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

相关文章

搭建预约咨询小程序,高效便捷新选择

一、预约咨询小程序是什么&#xff1f; 预约咨询小程序是一款适用于各种生活场景包括医疗、保洁、宠物护理、法律等方面的预约咨询类小程序。 二、这款小程序有什么亮点优势&#xff1f; 预约咨询小程序适用场景广泛&#xff0c;无论是心理咨询、法律咨询&#xff0c;还是宠物…

让图片开口说话的模型Hallo: 基于音频驱动的肖像图像动画,精准唇形同步,支持多种语言和风格

前言 让静态的图片“开口说话”&#xff0c;一直是人们对人工智能的期待。近年来&#xff0c;随着深度学习技术的发展&#xff0c;音频驱动的肖像图像动画技术取得了长足的进步。各种模型涌现&#xff0c;但如何实现精准的唇形同步、保持视频的真实感和流畅性&#xff0c;以及…

变长的时间戳设计

以前的时间戳有32位&#xff0c;以秒为单位&#xff0c;231秒≈68年&#xff0c;从1970年开始&#xff0c;到2038年会出问题。 后来出现的时间戳有64位&#xff0c;以纳秒为单位&#xff0c;263纳秒≈292年。 本次设计的变长时间戳&#xff0c;以32比特为单位&#xff0c;总共…

mysql8.0找不到my.ini

报错问题解释&#xff1a; MySQL 8.0 在Windows系统中通常不需要 my.ini 文件&#xff0c;因为安装程序会在 %PROGRAMDATA%\MySQL\MySQL Server 8.0\ &#xff08;通常是 C:\ProgramData\MySQL\MySQL Server 8.0\&#xff09;创建默认的配置文件。如果你的系统中找不到 my.ini…

Qt中利用QTextBrowser控件设计日志窗口

我们一般使用Qt开发应用程序时&#xff0c;都有将控制台窗口去掉。但是&#xff0c;有时候又需要查看一些调试信息&#xff0c;一般的处理方式是把log写到一个文件中。本文介绍一下日志窗口&#xff0c;可以更方便的查看日志信息。 UI设计 推拽UI控件&#xff0c;修改默认背景…

FFmpeg+SDL2实现音视频播放器项目

一、FFmpeg视频解码器 1.视频解码知识 1).纯净的视频解码流程 压缩编码数据->像素数据。 例如解码H.264&#xff0c;就是“H.264码流->YUV”。 2).一般的视频解码流程 视频码流一般存储在一定的封装格式&#xff08;例如MP4、AVI等&#xff09;中。封装格式中通常还…

反转链表(java精简版)

反转一个单向链表。 public class ReversingLinkedList {static class Node {int val;Node next;public Node(int val) {this.val val;}public boolean hasNext() {return next ! null;}}public static void main(String[] args) {//构造Node head null;Node shift null;for…

高效电商数据分析:电商爬虫API与大数据技术的融合应用

一、引言 随着电子商务的迅猛发展和数据量的爆炸式增长&#xff0c;电商数据分析已成为企业决策的关键依据。在竞争激烈的电商市场中&#xff0c;如何高效、准确地获取并分析数据&#xff0c;以洞察市场趋势、优化运营策略、提升用户体验&#xff0c;成为电商企业面临的重要挑…

期货止损口诀需牢记

实战操作难免错&#xff0c;心中不必一团火&#xff1b; 出错认输是常事&#xff0c;亏损不止闯大祸。 止损纪律要定死&#xff0c;价格不能差豪丝&#xff1b; 触及止损要出局&#xff0c;管它价格怎放肆。 强势多空价放宽&#xff0c;价格波动要空间&#xff1b; 大势不改…

【数学】什么是傅里叶级数与傅里叶变换?

傅里叶级数与傅里叶变换 背景 傅里叶级数和傅里叶变换是数学和工程领域中的重要工具&#xff0c;特别是在信号处理、图像处理和物理学中。傅里叶级数用于将周期函数表示为正弦和余弦函数的和&#xff0c;而傅里叶变换用于将任意函数表示为频率的函数。 公式 傅里叶级数&…

深度学习(十四)——优化器

前言 反向传播可以求出神经网路中每个需要调节参数的梯度(grad)&#xff0c;优化器可以根据梯度进行调整&#xff0c;达到降低整体误差的作用。下面我们对优化器进行介绍。 1. 如何使用优化器 官方文档:torch.optim — PyTorch 2.0 documentation &#xff08;1&#xff09;构…

Nexus安卓木马分析报告

概述 2023年3月21日晚上&#xff0c;链安与中睿天下联合研发的监控系统检测到一种新型安卓木马。在经过睿士沙箱系统捕获样本之后&#xff0c;发现该安卓木马极有可能是原安卓网银盗号木马SOVA的变种。与此同时&#xff0c;意大利安全公司Cleafy发布了一篇题为《Nexus&#xf…

JupyterLab使用指南(三):JupyterLab的Cell详细介绍

JupyterLab Cell 使用教程 JupyterLab 的 cell 是一种强大的工具&#xff0c;提供了编写、执行、展示和记录的全方位支持&#xff0c;使得复杂的计算任务变得简单直观。通过熟练掌握 cell 的各种操作和快捷键&#xff0c;用户可以显著提高工作效率&#xff0c;专注于解决实际问…

2024/6/20 驱动day7GPIO子系统

GPIO子系统点六盏灯 #include <linux/init.h> #include <linux/module.h> #include <linux/of.h> #include <linux/gpio.h> #include <linux/of_gpio.h> struct device_node* node; struct device_node* child_node1; struct device_node* child…

Java实现俄罗斯方块——文本域组件

技术实现&#xff1a; 1.初始化游戏窗口&#xff1b; 2.初始化游戏界面&#xff1b; 3.初始化游戏的说明面板&#xff1b; 4.随机生成下落方块&#xff1b; 5.绘制方块&#xff1b; 6.清除方块&#xff1b; 7.清楚某一行方块&#xff0c;上方方块掉落&#xff1b; 8.刷新…

复分析——第5章——整函数(复可积函数)(E.M. Stein R. Shakarchi)

第5章 整函数(复可积函数)(Entire Functions) ...but after the 15th of October I felt myself a free man, with such longing for mathematical work, that the last two months flew by quickly, and that only today I found the letter of the 19th of October that…

STM32单片机-FLASH闪存

STM32单片机-FLASH闪存 一、FLASH简介二、FLASH工作原理三、读写内部FLASH四、读取芯片ID 一、FLASH简介 STM32F1系列的FLASH包含程序存储器、系统存储器和选项字节三个部分&#xff0c;通过闪存存储器接口(外设)可以对程序存储器和选项字节进行擦除和编程读写FLASH的用途&…

ReF:斯坦福提出的新型语言模型微调方法

随着预训练语言模型&#xff08;LMs&#xff09;在各种自然语言处理&#xff08;NLP&#xff09;任务中的广泛应用&#xff0c;模型微调成为了一个重要的研究方向。传统的全参数微调方法虽然有效&#xff0c;但计算成本高昂&#xff0c;尤其是在大型模型上。为了解决这一问题&a…

解读代理 IP差异:ISP 代理与住宅代理

独立IP作为跨境必备工具&#xff0c;代理类型五花八门&#xff0c;今天IPFoxy全球代理将为搭建科普&#xff1a;ISP代理与住宅代理在理论上与使用上的区别。代理充当用户和互联网之间的中介&#xff0c;提供各种功能以增强安全性、隐私性和可访问性。在众多代理类型中&#xff…

嵌入式实验---实验四 DMA传输实验

一、实验目的 1、掌握STM32F103DMA传输程序设计流程&#xff1b; 2、熟悉STM32固件库的基本使用。 二、实验原理 1、利用外部按键KEY1来控制DMA的传送&#xff0c;每按一次KEY1&#xff0c;DMA就传送一次数据到USART1&#xff08;串口1&#xff09;&#xff1b; 2、该串口…