[openjudge-动态规划]买书

时间:2023-12-16 22:21:02

题目描述

描述

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

输入

一个整数 n,代表总共钱数。(0 <= n <= 1000)

输出

一个整数,代表选择方案种数

样例输入

样例输入1:

20

样例输入2:

15

样例输入3:

0

样例输出

样例输出1:

2

样例输出2:

0

样例输出3:

0

题目描述

01背包问题

代码实现

//背包
#include<iostream>
#include<cstdio>
using namespace std;
int n,a[1200]={0},money[5]={0,10,20,50,100};//用数组
int main()
{
    scanf("%d",&n);
    if(n==0){printf("0\n");return 0;}
    a[0]=1;
    for(int i=1;i<=4;i++)
        for(int j=money[i];j<=n;j++)//枚举容量
            a[j]+=a[j-money[i]];
    printf("%d",a[n]);
    return 0;
}