题目:
小明手里有n元钱全部用来买书,书的价格为10元,20元,50元,100元。
问小明有多少种买书方案?(每种书可购买多本)
输入格式
一个整数 n,代表总共钱数。
输出格式
一个整数,代表选择方案种数。
数据范围
0≤n≤1000
输入样例1:
20
输出样例1:
2
输入样例2:
15
输出样例2:
0
输入样例3:
0
输出样例3:
1
代码:
#include <iostream>
using namespace std;
const int N = 1010;
int n;
int v[4] = {10, 20, 50, 100};
int f[N];
int main()
{
cin >> n;
f[0] = 1;
for (int i = 0; i < 4; i ++ )
for (int j = v[i]; j <= n; j ++ )
f[j] += f[j - v[i]];
cout << f[n] << endl;
return 0;
}
1、这里只有四种情况,所以用一个数组存储起来
2、完全背包问题的空间从小到大,要记住
3、和01背包求方案书相似,每个数的方案数是加到不能加为止
4、得到所需的答案