输入的第一行是正整数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