change money

Run Settings
LanguageC
Language Version
Run Command
#include <stdio.h> #include <string.h> #define inf 0x23333333 #define N 100005 int n, s, r; // n 种面值, 目标 s, 剩下 r 元找不开 int v[N]; // 面值 int dp[N]; // 记忆 d(s) int d(int s) { if (s < 0) return inf; if (dp[s] != inf) return dp[s]; if (r > s) r = s; int result = inf; for (int i = 0; i < n; ++i) if (result > d(s - v[i]) + 1) result = d(s - v[i]) + 1; if (result != inf) dp[s] = result; return result; } int main() { scanf("%d%d", &n, &s); for (int i = 0; i < n; ++i) scanf("%d", &v[i]); dp[0] = 0; for (int i = 1; i <= s; ++i) dp[i] = inf; r = inf; if (d(s) == inf) printf("%d\n", d(s - r)); else printf("%d\n", d(s)); }
Editor Settings
Theme
Key bindings
Full width
Lines