输入的第一行是正整数n (1 <= n <= 20),表示不同的物品的数目。接下来的n行,每行有一个1到40之间的正整数,分别给出a1,a2……an的值。
输出不同的选择物品的方式的数目。
3 20 20 20
3
def findCountsNum(tempSum,nowIndex): #通过当前的下标和前面加的数字和进行查找 if nowIndex >= num: return if tempSum + digitNums[nowIndex] == 40: global count count += 1 findCountsNum(tempSum,nowIndex+1) elif tempSum+digitNums[nowIndex] < 40: findCountsNum(tempSum+digitNums[nowIndex],nowIndex+1) findCountsNum(tempSum,nowIndex+1) while True: try: num = int(input()) digitNums = [] for i in range(num): digitNums.append(int(input())) digitNums.sort() count = 0 findCountsNum(0,0) print(count) except Exception: break
def dfs(arr,vol):
global res
if vol<0:
return
if vol==0:
res+=1
return
for i,v in enumerate(arr):
dfs(arr[i+1:],vol-v)
while True:
try:
a, arr = int(input()), []
for i in range(a):
arr.append(int(input()))
res=0
dfs(arr,40)
print(res)
except:
break