总时间限制: 1000ms 内存限制: 65536kB
描述
小明手里有n元钱全部用来买书,书的价格为10元,20元,50元,100元。
问小明有多少种买书方案?(每种书可购买多本)
输入
一个整数 n,代表总共钱数。(0 <= n <= 1000)
输出
一个整数,代表选择方案种数
样例输入
样例输入1:
20
样例输入2:
15
样例输入3:
0
样例输出
样例输出1:
2
样例输出2:
0
样例输出3:
0
一个完全背包,注意特判n==0
#include<iostream>
#include<string.h>
using namespace std;
int n;
int dp[1001];
int main()
{
cin>>n;
int p[5];
p[1]=10;
p[2]=20;
p[3]=50;
p[4]=100;
memset(dp,0,sizeof(dp));
dp[0]=1;
for(int i=1;i<=4;i++)
{
for(int j=0;j<=n;j++)
{
if(j>=p[i])
dp[j]+=dp[j-p[i]];
}
}
dp[0]=0;
if(dp[n]<0)
cout<<"0";
else
cout<<dp[n];
return 0;
}