1.题目描述
你有一架天平和 N 个砝码,这 N 个砝码重量依次是 W1, W2, · · · , WN。
请你计算一共可以称出多少种不同的重量?
注意砝码可以放在天平两边。
输入描述:
输入的第一行包含一个整数 N。
第二行包含 N 个整数:W1, W2, W3, · · · , WN。
输出描述:
输出一个整数代表答案。
样例:(输入)
3 1 4 6
样例:(输出)
10
2.代码实现
n = int(input())
a = list(map(int, input().split()))
a.sort(reverse = True)
m = [0] + a
maxwgt = sum(m)
dp = [[0 for j in range(maxwgt + 1)] for i in range(n + 1)]
for i in range(n + 1):
dp[i][0] = 1
for i in range(1, n + 1):
for j in range(maxwgt + 1):
if dp[i - 1][j] == 1:
dp[i][j] = 1
dp[i][j + m[i]] = 1
if j > m[i]:
dp[i][j - m[i]] = 1
print(sum(dp[n][1:]))
输出:
3
1 4 6
10