数学公式解析
1. 有效暴击率计算:
CR=min(x+a,100)CR = \min(x + a, 100) CR=min(x+a,100)
* xxx: 基础暴击率
* aaa: 改装件暴击率增幅
* 结果上限为100%
2. 暴击率溢出转换:
OF=max(x+a−100,0)OF = \max(x + a - 100, 0) OF=max(x+a−100,0)
* 溢出部分按1:3比例转为暴伤加成
3. 最终暴伤加成:
CD=y+b+3×OFCD = y + b + 3 \times OF CD=y+b+3×OF
* yyy: 基础暴伤加成
* bbb: 改装件暴伤增幅
* 3×OF3 \times OF3×OF: 溢出转换的暴伤加成
4. 伤害计算公式:
DMG=10000×(1+CR100×CD100)DMG = 10000 \times \left(1 + \frac{CR}{100} \times \frac{CD}{100}\right) DMG=10000×(1+100CR ×100CD )
* 基础伤害10000
* 暴击收益:暴击率×暴伤加成
示例验证
1. 输入1:1 80 150 + 40 277
* CR=min(120,100)=100CR = \min(120,100) = 100CR=min(120,100)=100
* OF=20OF = 20OF=20
* CD=150+277+60=487CD = 150+277+60 = 487CD=150+277+60=487
* DMG=10000×(1+1×4.87)=58700DMG = 10000 \times (1 + 1 \times 4.87) = 58700DMG=10000×(1+1×4.87)=58700
2. 输入2:1 65 5 + 87 183
* CR=min(152,100)=100CR = \min(152,100) = 100CR=min(152,100)=100
* OF=52OF = 52OF=52
* CD=5+183+156=344CD = 5+183+156 = 344CD=5+183+156=344
* DMG=10000×(1+1×3.44)=44400DMG = 10000 \times (1 + 1 \times 3.44) = 44400DMG=10000×(1+1×3.44)=44400
复杂度分析
* 时间复杂度:O(n)O(n)O(n)
* 空间复杂度:O(1)O(1)O(1)
* 算法特点:线性扫描所有改装件,实时计算并比较伤害值
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
代码部分