题目描述:
小明手里有n元钱全部用来买书,书的价格为10元,20元,50元,100元。
问小明有多少种买书方案?(每种书可购买多本)
输入格式:
一个整数 n,代表总共钱数。(0 <= n <= 1000)
输出格式:
一个整数,代表选择方案种数
输入样例:
20
输出样例:
2
本题是一道完全背包的方案总数问题,在二维中
如果j<v[i],有f[i][j]=f[i-1][j]
否则j>=v[i],有f[i][j]=f[i-1][j]+f[i-1][j-v[i]]+f[i-1][j-2v[i]]+…
又f[i][j-v[i]] = f[i-1][j-v[i]]+f[i-1][j-2v[i]]+f[i-1][j-3*v[i]]+…
比对上式,可知f[i][j]=f[i-1][j]+f[i][j-v[i]] (j>=v[i])
因此有二维下代码:
#include<iostream>
using namespace std;
const int N=1010;
int f[N][N];//f(i,j)前i种,表示钱数不超过j的情况下可以得到的种类数
int v[5];
int n;
int main(){
cin>>n;
v[1