题解 | #数组分组#
数组分组
https://www.nowcoder.com/practice/9af744a3517440508dbeb297020aca86
def recursive(left: list[int], right: list[int], nums: list[int], pos: int):
if pos >= len(nums):
return sum(left) == sum(right)
cur = nums[pos]
if cur % 3 == 0 and cur % 5 != 0:
# 这里选择左边来放3的倍数
left.append(cur)
# 使用切片来复制一份 left 和 right 数组
# 避免回溯时带着上一层调用时的值
return recursive(left[0:], right[0:], nums, pos + 1)
elif cur % 5 == 0 and cur % 3 != 0:
# 这里选择右边来放5的倍数
right.append(cur)
return recursive(left[0:], right[0:], nums, pos + 1)
else:
# 既不是5的倍数也不是3的倍数
left.append(cur)
if not recursive(left[0:], right[0:], nums, pos + 1):
left.pop()
right.append(cur)
return recursive(left[0:], right[0:], nums, pos + 1)
else:
return True
_, nums = input(), list(map(int, input().strip().split()))
print("true") if recursive([], [], nums, 0) else print("false")
查看17道真题和解析