中兴算法:击杀怪物的最少技能数,回溯

def get_skill_num(As, xs, n, m):
    if n<=0&nbs***bsp;m<=0:
        return 0
    temp = [False]*n  # temp[i]表示技能未使用
    res = []          # 每个使用过技能造成的伤害
    results = []      # 击杀成功的可能技能数

    # m表示剩余血量
    def get_res(m):
        # print(res, m)
        if m<=0:        # 当血量<=0,击杀成功, 追加技能数到结果中
            results.append(len(res))
            return
        if False not in temp:      # 技能用完,但未击杀,返回
            return
        for i in range(n):         # 遍历每个未使用的技能
            if temp[i]==False:
                temp[i] = True            # 设置技能已使用
                if m<=xs[i]:              # 若剩余点数少于该技能阈值
                    res.append(2*As[i])   # 双倍伤害
                    m -= 2*As[i]          # 剩余血量减少
                    get_res(m)            # 递归使用其他技能
                    m += 2 * As[i]        # 回溯,不使用该技能
                else:
                    res.append(As[i])
                    m -= As[i]
                    get_res(m)
                    m += As[i]
                temp[i] = False           # 回溯, 不使用该技能
                res.pop()                 # 回溯,不使用该技能
    get_res(m)
    if results==[]:  # 如果各种技能顺序组合都不能击杀,该list是空的
        return -1
    res = results[0]   # 返回最小击杀技能数
    for i in results:
        res = min(i, res)
    return res

if __name__ == "__main__":
    n, m = 3, 100    # n,技能数;m,怪物血量
    As = [10, 45, 5]     # 每个技能的伤害
    xs = [20, 84, 40]    # 触发每个技能暴击的条件——怪物的剩余血量
    res = get_skill_num(As, xs, n, m)
    print(res)

    xs1 = [20, 89, 40]  # 触发每个技能暴击的条件——怪物的剩余血量
    res = get_skill_num(As, xs1, n, m)
    print(res)

    xs2 = [20, 90, 40]  # 触发每个技能暴击的条件——怪物的剩余血量
    res = get_skill_num(As, xs2, n, m)
    print(res)

#笔试题目#
全部评论

相关推荐

06-11 17:39
门头沟学院 Java
小呆呆的大鼻涕:卧槽,用户彻底怒了
点赞 评论 收藏
分享
06-15 02:05
已编辑
南昌航空大学 数据分析师
Eason三木:你如果想干技术岗,那几个发公众号合唱比赛的经历就去掉,优秀团员去掉,求职没用。然后CET4这种不是奖项,是技能,放到下面的专业技能里或者单独列一个英语能力。 另外好好改改你的排版,首行缩进完全没有必要,行间距好好调调,别让字和标题背景黏在一起,你下面说能做高质量PPT你得展现出来啊,你这简历排版我用PPT做的都能比你做的好。 然后自我评价,你如果要干数据工程师,抗压能力强最起码得有吧。
简历中的项目经历要怎么写
点赞 评论 收藏
分享
评论
1
4
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务