牛牛准备参加学校组织的春游, 出发前牛牛准备往背包里装入一些零食, 牛牛的背包容量为w。
牛牛家里一共有n袋零食, 第i袋零食体积为v[i]。
牛牛想知道在总体积不超过背包容量的情况下,他一共有多少种零食放法(总体积为0也算一种放法)。
输入包括两行
第一行为两个正整数n和w(1 <= n <= 30, 1 <= w <= 2 * 10^9),表示零食的数量和背包的容量。
第二行n个正整数v[i](0 <= v[i] <= 10^9),表示每袋零食的体积。
输出一个正整数, 表示牛牛一共有多少种零食放法。
3 10 1 2 4
8
三种零食总体积小于10,于是每种零食有放入和不放入两种情况,一共有2*2*2 = 8种情况。
n,w = list(map(int,input().split())) lst = list(map(int,input().split())) import itertools result=[] i=0 while i < len(lst): if lst[i]>w: lst.pop(i) i+=1 else: i+=1 for j in range(0,len(lst)+1): result.extend(list(itertools.combinations(lst, j))) for i in range(len(result)): if sum(result[i])>w: result.pop(i) print(len(result)) #超过内存了,不会了