AcWing 1023.买书

· · 题解

小明手里有 n 元钱全部用来买书,书的价格为 10 元, 20 元,50 元, 100 元。

问小明有多少种买书方案?(每种书可购买多本)

一个整数 n,代表总共钱数。

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

0≤n≤1000
20
2
15
0
0
1

不想多说,看代码。

#include<bits/stdc++.h>
using namespace std;

const int N = 1010;

int v[4]={10,20,50,100};
int f[N];//表示凑出 n 元的方案数
//f[i,j]=f[i-1,j]+f[i-1,j-v[i]]+f[i-1,j-2v[i]]+……
//f[i,j-v[i]]=f[i-1,j-v[i]]+f[i-1,j-2v[i]]+……
//f[i,j]=f[i-1,j]+f[i,j-v[i]] 
int n;

int main(){
    scanf("%d",&n);
    f[0]=1;
    for(int i=0;i<4;i++)
        for(int j=v[i];j<=n;j++)
            f[j]+=f[j-v[i]];

    printf("%d",f[n]);
    return 0;
}