题解 | #数组分组#
数组分组
https://www.nowcoder.com/practice/9af744a3517440508dbeb297020aca86
#定义一个dfs函数,传入sum3(3倍数的数组),sum5(5倍数的数组)以及other(还未分配的数字,既不是3又不是5倍数的数字)
#最后需要达成的目标,sum3和sum5中的值相加刚好相等,且other中没有待分配的数字,可以得出条件:sum(sum3) == sum(sum5) and len(other) = 0
#如果other中已经分配完毕,sum3和sum5还没有相等,那么不满足
#其余情况,要么other未分配的数字,要么给sum3,要么给sum5,可以得出公式 dfs(sum3+other[:1],sum5,other[1:]) or dfs(sum3,sum5+other[:1],other[1:])
def dfs(sum3,sum5,other):
if sum(sum3) == sum(sum5) and len(other) == 0:
return True
elif len(other) == 0:
return False
else:
return dfs(sum3+other[:1],sum5,other[1:]) or dfs(sum3,sum5+other[:1],other[1:])
n = input()
L = map(int,input().split())
sum3 = []
sum5 = []
other = []
for l in L:
if l % 5 == 0:
sum5.append(l)
elif l % 3 == 0:
sum3.append(l)
else:
other.append(l)
r = dfs(sum3,sum5,other)
if r:
print('true')
else:
print('false')
