题目描述
小明手里有n元钱全部用来买书,书的价格为10元,20元,50元,100元。
问小明有多少种买书方案?(每种书可购买多本)
样例
输入样例1:
20
输出样例1:
2
输入样例2:
15
输出样例2:
0
输入样例3:
0
输出样例3:
1
算法
(DP,完全背包求方案数) $O(n^2)$
- n元钱看作背包容量M
- 书的价格10元,20元,50元,100元看作体积为$V_i(10,20,50,100)$的物品,每个物品可以取多个。
求出总体积恰好是n的方案个数
C++ 代码
#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;
}
楼主转移的第二行应该是【i-1】吧