USACO 2.3 Money Systems 货币系统

题目大意


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

样例输入&输出


sample input

3 10

1 2 5

sample output

10

分析&反思


背包问题,复习一下。

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

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

代码


#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
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;
}

备注


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

猜你喜欢

转载自blog.csdn.net/DWAE86/article/details/81562323
2.3