题目描述
给你一个n种面值的货币系统,求组成面值为m的货币有多少种方案。
输入
第一行为n和m。
输出
样例输入
3 10
1
2
5
样例输出
10
#include <iostream>
using namespace std;
int dp[50000];
int main()
{
int n, m;
cin >> n >> m;
int v[500];
for ( int i = 0; i < n; i++ ) cin >> v[i];
dp[0] = 1; //初始化!!
for ( int i = 0; i < n; i++ ) //完全背包
for ( int j = v[i]; j <= m; j++ )
dp[j] += dp[j - v[i]]; //选中当前第i种=j时 == 不选中i=j-v[i] 时的可能数
cout << dp[m] << endl;
return 0;
}