小明手里有n元钱全部用来买书,书的价格为10元,20元,50元,100元。
问小明有多少种买书方案?(每种书可购买多本)
输入格式
一个整数 n,代表总共钱数。
输出格式
一个整数,代表选择方案种数。
数据范围
0≤n≤10000≤n≤1000
输入样例1:
20
输出样例1:
2
输入样例2:
15
输出样例2:
0
输入样例3:
0
输出样例3:
1
1.二维
#include <bits/stdc++.h>
using namespace std;
int v[]={0,10,20,50,100};
const int N=10010;
int f[N][N];
int main()
{
int n;
scanf("%d",&n);
f[0][0]=1;
for(int i=1;i<=4;i++)
{
for(int j=0;j<=n;j++)
{
f[i][j]=f[i-1][j];
if(j-v[i]>=0)
{
f[i][j]=f[i-1][j]+f[i][j-v[i]];
}
}
}
printf("%d",f[4][n]);
return 0;
}
2.一维
#include <bits/stdc++.h>
using namespace std;
int v[]={0,10,20,50,100};
const int N=10010;
int f[N];
int main()
{
int n;
scanf("%d",&n);
f[0]=1;
for(int i=1;i<=4;i++)
{
for(int j=v[i];j<=n;j++)
{
f[j]+=f[j-v[i]];
}
}
printf("%d",f[n]);
return 0;
}