题解 | #数组分组#
数组分组
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')