360笔试
import math
from typing import List
class Solution:
def combinationSum2(self, candidates: List[int], target: int, people:int):
if sum(candidates) < target:
return []
candidates.sort()
jieguo = list()
res = list()
self.abc(jieguo, res, target,candidates, 0, people)
return jieguo, len(jieguo)
def abc(self,jieguo, res, target,candidates, index, people):
if sum(res) >= target and len(res) == people:
jieguo.append(res[:])
return
elif len(res) > people:
return
for i in range(index, len(candidates)):
res.append(candidates[i])
self.abc(jieguo, res, target,candidates, i+1, people)
res.pop()
a = Solution()
n = int(input())
for i in range(n):
m, target = map(int, input().split())
num = int(math.ceil(m/2))
can = list(map(int, input().split()))
print(a.combinationSum2(can, target, num))
from typing import List
class Solution:
def combinationSum2(self, candidates: List[int], target: int, people:int):
if sum(candidates) < target:
return []
candidates.sort()
jieguo = list()
res = list()
self.abc(jieguo, res, target,candidates, 0, people)
return jieguo, len(jieguo)
def abc(self,jieguo, res, target,candidates, index, people):
if sum(res) >= target and len(res) == people:
jieguo.append(res[:])
return
elif len(res) > people:
return
for i in range(index, len(candidates)):
res.append(candidates[i])
self.abc(jieguo, res, target,candidates, i+1, people)
res.pop()
a = Solution()
n = int(input())
for i in range(n):
m, target = map(int, input().split())
num = int(math.ceil(m/2))
can = list(map(int, input().split()))
print(a.combinationSum2(can, target, num))
全部评论
相关推荐