DNF装备强化的算法分析与实现

需求

根据输入的当前等级和目标等级,得到强化到目标等级所需的强化次数(或装备爆掉),强化规则如下:

  • DNF装备强化在+1~+3 不会失败;
  • +4~+7,失败后物品原有强化等级降低1级;
  • +8~+10,失败后掉3级;
  • 10上11或以上就爆了。
  • DNF装备强化1~3级,成功率100%
  • DNF装备强化3~4级,成功率95%
  • DNF装备强化4~5级,成功率90%
  • DNF装备强化5~6级,成功率80%
  • DNF装备强化6~7级,成功率75%
  • DNF装备强化7~8级,成功率62.1%
  • DNF装备强化8~9级,成功率53.7%
  • DNF装备强化9~10级,成功率41.4%
  • DNF装备强化10~11级,成功率33.9%
  • DNF装备强化11~12级,成功率28%
  • DNF装备强化12~13级,成功率20.7%
  • DNF装备强化13~14级,成功率17.3%
  • DNF装备强化14~15级,成功率13.6%
  • DNF装备强化15~16级,成功率10.1%

算法分析

装备的等级可以用switch实现,成功概率可以用随机数实现,每次强化后判断是否达到目标等级,如未达到,则再次强化,直至强化到目标等级或装备爆掉。因为需多次用到强化和等级判断,所以可以将强化和等级判断分别封装成两个方法,多次互相调用来实现需求。

代码实现

import java.util.Scanner;public class Dnf {//计数器int count = 0;/*** 判断是否达到目标等级,若未达到则继续强化* @param nowLevel* @param targetLevel*/public void intensify01(int nowLevel,int targetLevel){if (nowLevel < targetLevel) {intensify(nowLevel,targetLevel);}else {System.out.println("强化所用次数:" + count);return;}}/*** 强化装备* @param nowLevel* @param targetLevel*/public void intensify(int nowLevel,int targetLevel) {switch (nowLevel) {case 0:case 1:case 2:System.out.println("恭喜你强化成功,当前等级:" + ++nowLevel);count++;intensify01(nowLevel,targetLevel);break;case 3:int n3 = (int) (Math.random() * 1000);if (n3 < 950) {System.out.println("恭喜你强化成功,当前等级:" + ++nowLevel);count++;} else {System.out.println("强化失败,当前等级:" + nowLevel);count++;}intensify01(nowLevel,targetLevel);break;case 4:int n4 = (int) (Math.random() * 1000);if (n4 < 900) {System.out.println("恭喜你强化成功,当前等级:" + ++nowLevel);count++;} else {nowLevel -= 1;System.out.println("强化失败,当前等级:" + nowLevel);count++;}intensify01(nowLevel,targetLevel);break;case 5:int n5 = (int) (Math.random() * 1000);if (n5 < 800) {System.out.println("恭喜你强化成功,当前等级:" + ++nowLevel);count++;} else {nowLevel -= 1;System.out.println("强化失败,当前等级:" + nowLevel);     count++;}intensify01(nowLevel,targetLevel);break;case 6:int n6 = (int) (Math.random() * 1000);if (n6 < 750) {System.out.println("恭喜你强化成功,当前等级:" + ++nowLevel);count++;} else {nowLevel -= 1;System.out.println("强化失败,当前等级:" + nowLevel);count++;}intensify01(nowLevel,targetLevel);break;case 7:int n7 = (int) (Math.random() * 1000);if (n7 < 621) {System.out.println("恭喜你强化成功,当前等级:" + ++nowLevel);count++;} else {nowLevel -= 1;System.out.println("强化失败,当前等级:" + nowLevel);count++;}intensify01(nowLevel,targetLevel);break;case 8:int n8 = (int) (Math.random() * 1000);if (n8 < 537) {System.out.println("恭喜你强化成功,当前等级:" + ++nowLevel);count++;} else {nowLevel -= 3;System.out.println("强化失败,当前等级:" + nowLevel);     count++;}intensify01(nowLevel,targetLevel);break;case 9:int n9 = (int) (Math.random() * 1000);if (n9 < 414) {System.out.println("恭喜你强化成功,当前等级:" + ++nowLevel);count++;} else {nowLevel -= 3;System.out.println("强化失败,当前等级:" + nowLevel);count++;}intensify01(nowLevel,targetLevel);break;case 10:int n10 = (int) (Math.random() * 1000);if (n10 < 339) {System.out.println("恭喜你强化成功,当前等级:" + ++nowLevel);count++;} else {System.out.println("很遗憾,强化失败,装备损坏!");count++;System.out.println("强化所用次数:" + count);return;}intensify01(nowLevel,targetLevel);break;case 11:int n11 = (int) (Math.random() * 1000);if (n11 < 280) {System.out.println("恭喜你强化成功,当前等级:" + ++nowLevel);count++;} else {System.out.println("很遗憾,强化失败,装备损坏!");count++;System.out.println("强化所用次数:" + count);return;}intensify01(nowLevel,targetLevel);break;case 12:int n12 = (int) (Math.random() * 1000);if (n12 < 207) {System.out.println("恭喜你强化成功,当前等级:" + ++nowLevel);count++;} else {System.out.println("很遗憾,强化失败,装备损坏!");count++;System.out.println("强化所用次数:" + count);return;}intensify01(nowLevel,targetLevel);break;case 13:int n13 = (int) (Math.random() * 1000);if (n13 < 173) {System.out.println("恭喜你强化成功,当前等级:" + ++nowLevel);count++;} else {System.out.println("很遗憾,强化失败,装备损坏!");count++;System.out.println("强化所用次数:" + count);return;}intensify01(nowLevel,targetLevel);break;case 14:int n14 = (int) (Math.random() * 1000);if (n14 < 136) {System.out.println("恭喜你强化成功,当前等级:" + ++nowLevel);count++;} else {System.out.println("很遗憾,强化失败,装备损坏!");count++;System.out.println("强化所用次数:" + count);return;}intensify01(nowLevel,targetLevel);break;case 15:int n15 = (int) (Math.random() * 1000);if (n15 < 101) {System.out.println("恭喜你强化成功,当前等级:" + ++nowLevel);count++;} else {System.out.println("很遗憾,强化失败,装备损坏!");count++;System.out.println("强化所用次数:" + count);return;}intensify01(nowLevel,targetLevel);break;}}public static void main(String[] args) {Scanner sc = new Scanner(System.in);System.out.print("输入当前等级:");int nowLevel = sc.nextInt();System.out.print("输入目标等级:");int targetLevel = sc.nextInt();Dnf id = new Dnf();if (nowLevel >= 0 && nowLevel <= 16 && targetLevel >= 0 && targetLevel <= 16) {id.intensify01(nowLevel,targetLevel);} else {System.out.println("输入的等级无效!");}}

DNF装备强化的算法分析与实现相关推荐

  1. 模拟DNF装备强化机制

    模拟DNF装备强化机制 你好! 这是本人在CSDN平台第一次发布文章,模拟dnf里面的装备强化机制,各位大佬请做出指点. 装备强化成功的概率 DNF装备强化1-3级,成功率100% DNF装备强化3- ...

  2. 自制DNF装备强化小程序

    自己开发了个强化小程序,强化1到5是100%成功,强化6概率是70%,强化8概率是100%,往后每级强化概率都有变化.强化等级大于8时强化失败,等级降到5,小于8时,强化失败等级不变, 特殊提示:VI ...

  3. dnf强化卷代码_这行代码告诉你!为什么你地下城与勇士(DNF)的装备强化老是失败?...

    tip1: DNF装备强化在+1-+3 不会失败: +4-+7,失败后物品原有强化等级降低1级: +8-+10,失败后掉3级: 10上11或以上就爆了. tip2: DNF装备强化1-3级,成功率10 ...

  4. 模拟地下城与勇士(DNF)的装备强化

    模拟地下城与勇士(DNF)的装备强化 tip1: DNF装备强化在+1-+3 不会失败: +4-+7,失败后物品原有强化等级降低1级: +8-+10,失败后掉3级: 10上11或以上就爆了. tip2 ...

  5. 模拟地下城与勇士(DNF)的装备强化过程

    标题模拟的要求 做一个DNF装备强化的简单项目,强化装备的成功率会随着装备等级的增加而降低. 提示1: DNF装备强化在+1-+3 不会失败: +4-+7,失败后物品原有强化等级降低1级: +8-+1 ...

  6. 模拟地下城与勇士(DNF)的装备强化实现过程

    这里写自定义目录标题 模拟地下城与勇士(DNF)的装备强化实现过程: 模拟地下城与勇士(DNF)的装备强化实现过程: 题目: DNF装备强化在+1-+3 不会失败: +4-+7,失败后物品原有强化等级 ...

  7. Java基础实现模拟地下城与勇士(DNF)的装备强化过程

     大家好,我是kai_Childe,作为一名java刚入门的小白,本期就以java基础来模拟地下城与勇士(DNF)的装备强化过程,并以此来记录我的学习过程. 文章目录 强化未成功惩罚机制 各等级强化成 ...

  8. java经典习题-模拟地下城与勇士(DNF)的装备强化

    java模拟地下城与勇士(DNF)的装备强化 tip1: DNF装备强化在+1-+3 不会失败: +4-+7,失败后物品原有强化等级降低1级: +8-+10,失败后掉3级: 10上11或以上就爆了. ...

  9. 【Java】模拟地下城与勇士(DNF)的装备强化过程

    提示1: DNF装备强化在+1-+3 不会失败: +4-+7,失败后物品原有强化等级降低1级: +8-+10,失败后掉3级: 10上11或以上就爆了. 提示2: DNF装备强化1-3级,成功率100% ...

  10. 地下城与勇士(DNF)

    模拟地下城与勇士(DNF)的装备强化过程: 提示1: DNF装备强化在+1-+3 不会失败: +4-+7,失败后物品原有强化等级降低1级: +8-+10,失败后掉3级: 10上11或以上失败就爆了. ...

最新文章

  1. 精通Spring Boot —— 第十五篇:使用@ControllerAdvice处理异常
  2. PAT 1069 1070 1071 1072
  3. jquery 轮播插件 bxslider
  4. tensorflow 进阶(三),BP神经网络之两层hidden_layer
  5. html万年历闹钟怎么取消,万年历如何取消整点报时,他上面有四个键,分...
  6. 对象导论---JAVA编程思想
  7. bartlett 算法 matlab,GWO(灰狼优化)算法MATLAB源码逐行中文注解(转载)
  8. opencv抠人像_卸载PS吧!这个小程序就能一键AI抠图,超简单!
  9. 上下两个x轴_工业机器人到底有多少个“轴”?
  10. test dword ptr [eax],eax ; probe page.
  11. 如何用一行 CSS 实现 10 种现代布局?
  12. 用什么的SQL语句来查的一个表中有相同的记录条数
  13. ARM裸机开发(三)SDRAM编程
  14. matlab简单函数画图例题,Matlab(十) 简单的函数画图
  15. rabbitmq启动报错,TCP connection succeeded but Erlang distribution failed
  16. 有没有安卓4.0的java模拟器_手机java模拟器apk下载
  17. [imx6 VPU]硬解码+示例[ffmpeg获取海康rtsp h264流 QT显示]
  18. 计算机组成原理学习-实验一 运算器实验(详细、系统)
  19. 我们对Google的排名算法到底了解多少?
  20. (三)模仿学习-Action数据的模仿

热门文章

  1. 如何一键生成gif动画?如何将录屏转成gif动画?推荐一款绿色开源小软件ScreenToGif
  2. 数据结构-直接选择排序
  3. java 一元线性回归_Java实现一元线性回归
  4. 发现美,欣赏美,美之我见
  5. Python优化算法01——差分进化算法
  6. 宝塔搭建javaweb_宝塔面板配置及部署javaweb教程(全网最全)
  7. 软件测试用例.范文,软件测试用例模板范文.doc
  8. 苏亚星显示没有登录的服务器,苏亚星机房管理系统
  9. 国密SM2算法陷入安全危机? 假!SM2仍然安全
  10. 【考研数学】函数图像(三角函数、幂函数、指数函数等)