b belajar.myudak

Diberikan pecahan koin coins (jumlah tiap pecahan tak terbatas) dan total amount. Kembalikan jumlah koin minimum untuk membentuk amount, atau -1 jika tidak mungkin.

coins = [1, 2, 5], amount = 11 → 3   // 5 + 5 + 1
coins = [2],       amount = 3  → -1

Perhatikan bahwa greedy tidak selalu optimal: untuk koin [1, 3, 4] dan total 6, greedy memberi 4+1+1 (3 koin), padahal 3+3 hanya 2 koin.

Topik
dynamic programming
Petunjuk 1

Algoritma greedy (ambil koin terbesar dulu) gagal untuk koin [1, 3, 4] dan total 6. Kenapa?

Petunjuk 2

dp[x] = 1 + min(dp[x − c]) untuk setiap koin c ≤ x, dengan dp[0] = 0.

Pengaturan editor

Ukuran font
Ukuran huruf di editor.
Ukuran tab
Lebar indentasi. Otomatis: 2 spasi untuk TypeScript, 4 untuk Python.
Key bindings
Ganti ke mode Vim.
Nomor baris relatif
Nomor baris dihitung dari posisi kursor (berguna untuk gerakan Vim).
Word wrap
Baris panjang dilipat agar muat di lebar editor.
IntelliSense
Saran kode otomatis saat mengetik (Ctrl+Spasi tetap bisa dipakai saat mati).

Nilai ditulis sebagai JSON. Output yang diharapkan dihitung dari solusi referensi.