暑假才开始搞算法的数学僧求大神看看我写的算法
8月30号拼多多第一题,哎,模型的重要性啊! 第一题,杀怪游戏。每次选一个动作攻击或聚力(聚力的效果下一次攻击体现)。 怪的出始血量为HP,你每次普通攻击的伤害为normalAttack,聚力后的攻击为buffedAttack。 HP小于等于0时怪死亡。求最小回合把怪打死(大致就是这个意思吧) 例子,HP=13,normalA=3,buffedA=5 最少5回合可以杀死 分析:首先不能连续聚力,当聚力一次,下一回合必须攻击一次才算效率最高。有个小坑,buffed攻击不一定就比普通连续攻击的伤害高(当buffed攻击<=2*normal攻击时)。 攻击方式有四种(从第一次开始)1:normal攻击—聚力—buffed攻击,2:聚力-buffed攻击-normal攻击, 3:mormal攻击-mormal攻击-mormal攻击,4:聚力-buffed攻击-聚力,可能还有其他的情况,但是代表性也就这四种了(为什么这四种的回合都一样因为3个回合是一个循环这个对写算法帮助非常大),当buffed攻击>2*normal攻击时。 经过比较只有1,2效率最高他们相同选取1做算即可,当buffed攻击<=2*normal攻击时连续普通效果最高。 算法: def kill_one(HP,normalA,buffedA): if buffedA<=2*normalA: a = HP/normalA if a>int(a): return int(a)+1 else: return a else: b = HP/(normalA+buffedA) if b>int(b): c = HP-int(b)*(normalA+buffedA) d = c/normalA if d>int(d): return int(b)*3+int(d)+1 else: return int(b)*3+d else: return b HP=25 normalA=3 buffedA=7 kill_one(HP,normalA,buffedA) 输出8 3-聚力-7,3—聚力-7,3-3或者聚力-7
#笔试题目##拼多多##内推#
