1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | #include <iostream> #include <cstring> using namespace std; int dp[10000]; int coins[] = { 50, 20, 10, 5, 1 }; int rec(int n, int cutoff) { if (n == 0) return 1; if (dp[n] != -1) return dp[n]; int cnt = 0; for (int i = cutoff; i < 5; i++) if (coins[i] <= n) cnt += rec(n - coins[i], i); return dp[n] = cnt; } int main() { int n; while (cin >> n) { memset(dp, -1, sizeof dp); cout << rec(n, 0) << endl; } return 0; } |
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8Y3N0cmluZz4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmludCBkcFsxMDAwMF07CmludCBjb2luc1tdID0geyA1MCwgMjAsIDEwLCA1LCAxIH07CmludCByZWMoaW50IG4sIGludCBjdXRvZmYpCnsKICBpZiAobiA9PSAwKSByZXR1cm4gMTsKICBpZiAoZHBbbl0gIT0gLTEpIHJldHVybiBkcFtuXTsKICBpbnQgY250ID0gMDsKICBmb3IgKGludCBpID0gY3V0b2ZmOyBpIDwgNTsgaSsrKQogICAgaWYgKGNvaW5zW2ldIDw9IG4pIGNudCArPSByZWMobiAtIGNvaW5zW2ldLCBpKTsKICByZXR1cm4gZHBbbl0gPSBjbnQ7Cn0KCmludCBtYWluKCkKewppbnQgbjsKd2hpbGUgKGNpbiA+PiBuKQp7Cm1lbXNldChkcCwgLTEsIHNpemVvZiBkcCk7CmNvdXQgPDwgcmVjKG4sIDApIDw8IGVuZGw7Cn0KcmV0dXJuIDA7Cn0=
-
upload with new input
-
result: Success time: 0.02s memory: 2764 kB returned value: 0
1 4 5 10 13 15 20
1 1 2 5 5 10 26


