18:买书

来源:互联网 发布:linux 系统编程delay 编辑:程序博客网 时间:2024/05/17 22:21

描述
小明手里有n元钱全部用来买书,书的价格为10元,20元,50元,100元。
问小明有多少种买书方案?(每种书可购买多本)

输入
一个整数 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;} 


0 0
原创粉丝点击