diff options
| author | omagdy7 <omar.professional8777@gmail.com> | 2023-03-07 16:21:15 +0200 |
|---|---|---|
| committer | omagdy7 <omar.professional8777@gmail.com> | 2023-03-07 16:21:15 +0200 |
| commit | 035ae0db488809f8c6a2d0956614c344ed8e4f32 (patch) | |
| tree | 7a49e2296a04e97b2c475758a9c105d8efadbf39 /classics/dp/coin.cpp | |
| parent | 90c03b3c6301f5d8908ce3e2dec936a74b035014 (diff) | |
| download | competitive-programming-035ae0db488809f8c6a2d0956614c344ed8e4f32.tar.xz competitive-programming-035ae0db488809f8c6a2d0956614c344ed8e4f32.zip | |
Solved a dp problem on codeforces
Diffstat (limited to 'classics/dp/coin.cpp')
| -rw-r--r-- | classics/dp/coin.cpp | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/classics/dp/coin.cpp b/classics/dp/coin.cpp new file mode 100644 index 0000000..cc57f02 --- /dev/null +++ b/classics/dp/coin.cpp @@ -0,0 +1,31 @@ +#include <bits/stdc++.h> + +using namespace std; + +vector<int> coins = {1, 3, 4}; +#define INF 1e9 + +int solve(int x) { + static map<int, int> cache; + if (x < 0) + return INF; + if (x == 0) { + cache[0] = 0; + return 0; + } + if (cache.count(x)) { + return cache[x]; + } + int best = INF; + for (auto c : coins) { + best = min(best, solve(x - c) + 1); + } + cache[x] = best; + return best; +} + +int main() { + int n; + cin >> n; + cout << solve(n) << '\n'; +} |
