|
4#
楼主 |
发表于 2022-9-28 06:53
|
只看该作者
来自:江苏
算法:
前面的铺垫已经够多了,说一下算法是怎么具体是实现的。
方法computeFusion
计算两个指定X星X级(能量等级)的珠子融合后的元魂珠。
这个很容易实现,就是A融合 + A等级带来的融合 +B 融合 + B等级带来的融合的结果除以4即可,中间判断能否执行融合、升星还是保星等
方法questAMethod(fusionClass: FusionClass,aimFusion: Int): FusionClass求一个X星X融合点的元魂珠
复制传参的链表(用于存储合成链)
利用循环 计算needFusion,是用aimFusion X2 - 元魂珠合成列表顶端的星级,等级带来的融合点。等级递减,直到needFusion 大于等于 0 , 或者等级 等于 1
判断是否符合迭代终止条件,如果不符合迭代终止条件,勉强把他当作临时的解,再次复制一个链表,把新的操作加进去,把这次等级、合成带的成本也加进去。
在如果不符合终止条件,迭代执行questAMethod(刚才的合成链加进去,needFusion)
如果上面的等级没有等于1,就继续循环递减,复制链表,每个等级都计算 一个新的合成操作,并迭代执行questAMethod(这次循环的合成链加进去,这次循环里的needFusion)
比对与上面的操作链的成本,如果新的合成成本比 上面的低,就替换操作。
直到循环截至。
返回操作链
这样就算是计算完成了
|
|