描述
小明手里有n元钱全部用来买书,书的价格为10元,20元,50
元,100元。
问小明有多少种买书方案?(每种书可购买多本)
输入 一个整数 n,代表总共钱数。(0 <= n <= 1000)
输出 一个整数,代表选择方案种数
样例输入 样例输入1:20样例输入2:15样例输入3:0
样例输出
输入 一个整数 n,代表总共钱数。(0 <= n <= 1000)
输出 一个整数,代表选择方案种数
样例输入 样例输入1:20样例输入2:15样例输入3:0
样例输出
样例输出1:2样例输出2:0样例输出3:0
解题思路:
完全背包问题,因为钱全都买书,所以如果不可以被10整除,输出0;
细节处理:
对于可以被10整除的情况,n除以10以后可以节省空间
代码:
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n,i;
cin>>n;
int v[4]={1,2,5,10};
if(n%10!=0||n==0) cout<<0;
else {
n/=10;
long long int a[105]={0};
a[0]=1;
for(int r=0;r<4;r++)
for(i=1;i<=n;i++)
if(i-v[r]>=0)
a[i]+=a[i-v[r]];
cout<<a[n];
}
return 0;
}