动态规划-打败怪兽的概率(java)

news/2024/11/29 8:36:28/

打败怪兽的概率

  • 打败怪兽的概率
  • 暴力递归
    • 代码演示
  • 动态规划
    • 代码演示
  • 动态规划专题

打败怪兽的概率

给定3个参数,N,M,K 怪兽有N滴血,
等着英雄来砍自己 英雄每一次打击,
都会让怪兽流失[0~M]的血量 到底流失多少?
每一次在[0~M]上等概率的获得一个值
求K次打击之后,英雄把怪兽砍死的概率

暴力递归

先把能打出伤害点数的可能性全部求出来:
long all = Math.pow(M + 1,K);
因为伤害是 0 - M 所以求所有可能性时是 M + 1
然后递归每种可能出现的伤害.

代码演示

  /**** @param N 怪兽有N滴血,* @param M 英雄每一次打击, 都会让怪兽流失[0~M]的血量* @param K K次打击* @return*/public static double killMonster(int N,int M,int K){if (N < 1 || M < 1 || K < 1) {return 0;}long process = process(N, M, K);long all = (long)Math.pow(M + 1, K);return  (double)process /(double)all;}/*** 递归* @param N 怪兽有N滴血,* @param M 英雄每一次打击, 都会让怪兽流失[0~M]的血量* @param K K次打击* @return*/public static long process(int N,int M,int K){//base caseif (K == 0){return N <= 0 ? 1 : 0;}//如果次数还没用完,怪兽就死了,那么剩下的刀数直接求可能出现的所有可能if (N <= 0){return (long)Math.pow(M + 1,K);}int ans = 0;//递归每种可能打出来的伤害for (int i = 0; i <= M;i++){ans += process(N - i,M,K - 1);}return ans;}

动态规划

对递归进行改写,先确定动态规划表如何设置,找到递归中的变量.
每次剩余的血量和砍的次数,因此二维数组就可以了.
然后改写三步骤:
1.根绝base case 初始化变量
2.递归过程改写
3.返回递归最开始调用的过程

代码演示

   /*** 动态规划* @param N 怪兽有N滴血,* @param M 英雄每一次打击, 都会让怪兽流失[0~M]的血量* @param K K次打击* @return*/public static double hp(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];//base case 初始化dp[0][0] = 1;//i 是可以砍怪兽的次数for (int i = 1; i <= K;i++){//血量为0 后,如果次数还没用完,怪兽就死了,那么剩下的刀数直接求可能出现的所有可能dp[i][0] = (long)Math.pow(M + 1,i);//j 是怪兽的血量for (int j = 1; j <= N;j++){int ans = 0;//每次砍可能掉的血量,for (int hp = 0; hp <= M;hp++){if (j - hp >= 0){ans += dp[i - 1][j - hp];}else{ans +=  (long)Math.pow(M + 1,i - 1);}}dp[i][j] = ans;}}long kill =  dp[K][N];return (double) kill / (double) all;}

动态规划专题

'leetcode688. 骑士在棋盘上的概率

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

最小路径和

最长回文子序列

leetcode1143. 最长公共子序列

leetcode51. N 皇后


http://www.ppmy.cn/news/320444.html

相关文章

【PCB专题】案例:绕等长怎么直接以颜色区分看出是否绕好

PCB上对于时序的处理,在板卡上实际我们是通过绕等长的手段。做为一个合格的Layout工程师,等长的处理是不可或缺的技能。 一般来说,在绕等长的时候我们可以使用Delay Tune命令来改变走线的长度,然后通过规则管理器中分析看看哪根线长哪根线短。 但是在实际工作中,很可能绕着…

51日记5

01/17 20&#xff1a;25(逛街给她买了个小熊巧克力)啊&#xff1f;恩我把它吃了&#xff0c;亨亨它哭了。那你累了就休息会儿&#xff0c;01/18 23&#xff1a;00(在她面前有两个选择,她会选谁呢?)刚走进宿舍传来的是对爱情观的争论&#xff0c;这时有一个人她心里不知道为什么…

别人的收藏

0DAY 0day divxz 数据库 0day Gamez How to tell NFOrce Entertainment TLF 0DayCheck Index TLF资讯网 UGiA 0day search engine _ 2002-2005 梦幻0Day&#xff5e;game 阿拉下载 龙族-北京站 - MC SYSTEM 2004 BBS 下载论坛 9Down Forum 9Team BillWang论坛 DreamLand FTP情报…

[创业路程] 从Idea到付诸实践,你必须要知道的…创业草堂系列

创业草堂系列 [创业路程] 从Idea到付诸实践&#xff0c;你必须要知道的… 来源 世界经理人 社区 转载 qq1163551688 繁荣 创业 的Idea是怎样产生的&#xff1f; [创业草堂之1]  “创业”&#xff0c;在很多人的想象中&#xff0c;就是两个小伙子在车库里、或者在学生…

RPG游戏设计

目录&#xff1a; 第一章 概述 第二章 场景 第三章 角色 第四章 道具 第五章 事件 第六章 对白 第七章 语音和音效 第八章 音乐 第九章 界面 第十章 规则 第十一章 命名 第一章&#xff1a;概述 RPG游戏即角色扮演游戏&#xff08;Role Personate Game&#xff09;&#xff0c;…

从Idea到付诸实践,你必须要知道的

创业 的Idea是怎样产生的&#xff1f; [创业草堂之1]  “创业”&#xff0c;在很多人的想象中&#xff0c;就是两个小伙子在车库里、或者在学生寝室里&#xff0c;侃出了一个Idea&#xff0c;然后找到了一个投资 人或VC&#xff0c;经过几句话讲解&#xff0c;VC拍手叫绝&am…

关于代码家(干货集中营)共享知识点汇总系列——休息娱乐

关于代码家&#xff08;干货集中营&#xff09;共享的所有休息娱乐&#xff0c;后续每周会对其进行更新 更多内容请选择以下入口 关于代码家(干货集中营)共享知识点汇总系列——Android 关于代码家(干货集中营)共享知识点汇总系列——IOS 关于代码家(干货集中营)共享知识点…

WOW装备大全(07.11.30)

德需求&#xff1a; 布拉克希斯的睡眠法杖 装备后绑定双手法杖131-223 伤害速度 3&#xff08;每秒伤害 59&#xff09;550 点护甲39 耐力 耐久度 100/100 需要等级 64 装备: 在猎豹、熊、巨熊和枭兽形态下的攻击强度提高234点。 大地守卫者拾取后绑定唯一双手锤142 - 279伤…