1 条题解
-
0
【思路】
完全背包
很水的一道完全背包题目【题目大意】
一些面额的货币
组合成n价值一共有多少种组合方式【核心思路】
假如你有a,b,c面值的硬币
你需要凑足acioi的面额
那么单纯看acioi来说
acioi的组合数量是不是就是
(acioi - a) , (acioi - b) 和 (acioi - c)这三种面额组成方式的和?
所以这就可以跑完全背包了
只不过这里是加起来
不是求最值了【完整代码】
#include<iostream> #include<cstdio> #define int long long using namespace std; const int Max = 10005; int b[Max] = {1},a[30];//默认b[0]为1,也就是在代码中减去一种硬币的面额之后等于0,是这一种硬币一个就可以组成的,所以次数是1 signed main() { int v,n; cin >> v >> n; for(register int i = 1;i <= v;++ i) cin >> a[i]; for(register int i = 1;i <= v;++ i) for(register int j = a[i];j <= n;++ j) b[j] += b[j - a[i]]; cout << b[n] << endl; return 0; }
- 1
信息
- ID
- 1012
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 4
- 标签
- 递交数
- 38
- 已通过
- 19
- 上传者