[算法导论] 部队集合 — 攻防和最大,攻击和>=0, 防御和>=0

另一道关于攻防的题(与这个题完全不同):

题解【贪心】:把攻击数组和防御数组都排序,然后两个数组首尾相加,如果和都大于等于k,满足条件。

acdream 1715(贪心)_路小白_zZ的博客-CSDN博客

0. 题目

一共有n个士兵,其中给定每个士兵的攻击与防御。

熊熊首领可以选择士兵,也可自己出征(攻防都为0),怎样选择攻防和最大,且攻击和>=0,防御和 >=0。

1. 暴力破解 dfs 超时

最先想到暴力破解 dfs回溯,但是超时。

2. dfs + 剪枝

目前只想到剪枝,没有更好的想法,如果有,可以评论或私信。

剪的应该不能ac。。

# n = int(input())
# d = {}  # d 收集所有的 士兵攻防信息,在函数中进行剪枝。
res = 0
# for i in range(n):
#     a, b = map(int, input().split())
#     d[(a, b)] = a + b
#     l.append([a,b])
l = [[2, 3], [8, -4], [-2, 1]]# d = {(2, 3): 5, (8, -4): 4, (-2, 1): -1}# 带剪枝的回溯
def dfs(i, tmp, sum_


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部