You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

28 lines
935 B

2 years ago
#include <bits/stdc++.h>
using namespace std;
const int N = 5;
const int M = 1010;
int v[N] = {0, 10, 20, 50, 100}; // 每种货币下标从1开始
int n, m; // 货币种类,钱数
int f[N][M]; // 前i种物品体积恰好是j的情况下的最大值
// 完全背包
int main() {
n = 4;
cin >> m;
// 前0种物品体积是0的情况下只有一种方案
// 一般询问方案数的问题f[0]都会设置为1
// Q:那20元钱呢不买买两本10块的每一本20的。三种呀
// A:题目说的全部,钱要花完
f[0][0] = 1;
for (int i = 1; i <= n; i++) // 每个物品
for (int j = 0; j <= m; j++) // 每个体积
for (int k = 0; v[i] * k <= j; k++) // 个数
f[i][j] += f[i - 1][j - v[i] * k];
printf("%d\n", f[n][m]);
return 0;
}