【题目描述】
小明手里有n元钱全部用来买书,书的价格为10元,20元,50元,100元。
问小明有多少种买书方案?(每种书可购买多本)
【输入】
一个整数 n,代表总共钱数。(0≤n≤1000)
【输出】
一个整数,代表选择方案种数。
【输入样例】
20
【输出样例】
2
当我们看到这种“每种书可购买多本”时,第一反应,就是搜索完全背包,题解如下。
#include "bits/stdc++.h"//楼主较懒,用万能头
using namespace std;
int f[1000+20];
int w[5]={114514,10,20,50,100};
int main()
{
int m;
scanf("%d",&m);//输入总钱数
f[0]=1;//起始值
for(int i=1;i<=4;i++)//每种书
{
for(int j = w[i]; j <= m ; j++)//到每种书已用总价值
{
f[j]+=f[j-w[i]];//每种书达到该价值方案数
}
}
cout<<f[m];//输出
return 0;
}