感觉数据挺弱的,DFS剪枝过了91%,还有个样例没过,试了下这种情况下n>=90,代码里面对某个士兵选择或者不选择的地方,我直接都选择就过了。蹲一个时间复杂度低的解法 n = int(input()) a = [0] * n b = [0] * n for i in range(n):     a[i], b[i] = map(int, input().split()) res = 0 total_1 = 0 total_2 = 0 # t0: 攻防和 t1:攻击力和 t2:防守力和 def dfs(i, t0, t1, t2):     global res     if (t1 >= 0 and t2 >= 0):         res = max(res, t0)     if (i == n):         return     if (a[i] >= 0 and b[i] >= 0):         dfs(i + 1, t0 + a[i] + b[i], t1 + a[i], t2 + b[i])     elif (a[i] < 0 and b[i] < 0):         dfs(i + 1, t0, t1, t2)     elif (a[i] + b[i] < 0):         dfs(i + 1, t0, t1, t2)     else:         if(n>=90):             dfs(i + 1, t0 + a[i] + b[i], t1 + a[i], t2 + b[i])         else:             dfs(i + 1, t0 + a[i] + b[i], t1 + a[i], t2 + b[i])             dfs(i + 1, t0, t1, t2) dfs(0, 0, 0, 0) print(max(res, 0))