题目描述
给你一个n种面值的货币系统,求组成面值为m的货币有多少种方案。样例:设n=3,m=10,要求输入和输出的格式如下:
输入
第一行两个整数n,m(m<=5000)
以下n行,每行一个整数,第i+1行为第i种货币的面值
输出
一个整数,为方案数
样例输入
3 10
1
2
5
样例输出
10
来源
动态规划-背包问题
Python
n, m = map(int, input().split())
arr = [0]
ans = [0 for _ in range(5001)]
ans[0] = 1
for _ in range(n):
c = int(input())
arr.append(c)
for i in range(1, n + 1):
for j in range(arr[i], m + 1):
ans[j] = ans[j] + ans[j - arr[i]]
print(ans[m])