USACO 2.3 Money Systems 货币系统

题目大意


给出一个货币系统,即你有哪些面值的货币,问给出的数值有几种组成方式。

 

样例输入&输出


sample input

3 10

1 2 5

sample output

10

 

分析&反思


背包问题,复习一下。

完全背包,只不过存储的是方案数。

等于以前是判断方案是否更优,现在是有新方案就传过来。

USACO 2.3 Money Systems 货币系统_第1张图片

 

代码


#include
#include
#include
#include
using namespace std;

long long v, n, a[30], dp[10005];

int main() {
	
	freopen("money.in", "r", stdin);
	freopen("money.out", "w", stdout);
	
	cin >> v >> n;
	for(int i = 1; i <= v; i++) cin >> a[i];
	
	dp[0] = 1;
	for(int i = 1; i <= v; i++)
	for(int j = 0; j <= n - a[i]; j++) dp[j+a[i]] += dp[j];
	
	cout << dp[n] << endl;
	
	return 0;
}

备注


背包九讲考不考虑复习一下?

 

你可能感兴趣的:(动态规划,USACO)