假设您是个土豪,身上带了足够的 元以及 种奇葩面值的钞票。现在您的目标是凑出某个金额,需要用到尽量少的钞票。
程序的输入共有两行:
第一行为 个整数 和
第二行为 个整数 代表除了 元以外的其他钞票面额
一个整数,凑出目标金额使用的最少的钞票数量
2 15 5 11
3
4 99 5 7 20 50
6
cpp#include <iostream>
#include <algorithm>
int main() {
#ifdef OHTOAI_LOCAL_MACHINE
std::freopen("input.txt", "r", stdin);
#endif
using std::cin;
using std::cout;
using std::endl;
std::ios::sync_with_stdio(false);
int f[1000001] = {0};
int money[100];
int n, w;
cin >> n >> w;
for (int i = 0; i < n; ++i) {
cin >> money[i];
}
std::sort(money, money + n);
for (int i = 0; i < n; ++i) {
cout << money[i] << ", ";
}
cout << endl;
for (int i = 2; i <= w; ++i) {
int min_cost = f[i - 1] + 1;
for (int c = 0; c < n && i >= money[c]; ++c) {
auto new_cost = f[i - money[c]] + 1;
if(min_cost > new_cost) {
min_cost = new_cost;
}
}
f[i] = min_cost;
}
cout << f[w] << endl;
return 0;
}
本文作者:OhtoAi
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!