Persediaan Temu Duga Pengaturcaraan · Pelajaran

DP Tanpa Had dan Pertukaran Syiling

Gunakan item seberapa banyak kali yang diperlukan.

Pelajaran 3 daripada 413 langkah

DP Tanpa Had dan Pertukaran Syiling ialah pelajaran Persediaan Temu Duga Pengaturcaraan percuma di CoddyKit. Ini ialah pelajaran 3 daripada 4. Anda boleh membaca keseluruhan pelajaran di bawah secara percuma — kemudian berlatih secara praktikal dalam pelayar menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran Persediaan Temu Duga Pengaturcaraan, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus Persediaan Temu Duga Pengaturcaraan merangkumi sejumlah 4 pelajaran.

Barang Tanpa Had

Dalam beg galas tanpa had, setiap barang boleh diambil sebanyak mana yang anda mahu. Bayangkan syiling dalam mesin layan diri, bukan timbunan barang yang tetap.

Satu Perubahan Kecil

Berbanding 0/1, hanya arah gelung yang berubah. Untuk barang tanpa had, anda mengulang kapasiti secara ke hadapan, daripada rendah kepada tinggi.

Penggunaan Semula ke Hadapan ialah Tujuannya

Apabila bergerak ke hadapan, dp[w - coin] mungkin sudah mengandungi barang yang sama. Penggunaan semula yang disengajakan inilah yang membolehkan anda mengambilnya lagi.

Kenali Pertukaran Syiling

Masalah klasik pertukaran syiling meminta bilangan syiling paling sedikit yang jumlahnya sama dengan sesuatu amaun. Ini ialah DP tanpa had dengan minimum dan bukannya maksimum.

Takrifkan Keadaan

Biarkan dp[a] menjadi bilangan syiling paling sedikit yang diperlukan untuk membentuk amaun a. Mulakan dengan dp[0] = 0 kerana sifar tidak memerlukan syiling.

dp = [float("inf")] * (amount + 1)
dp[0] = 0

Gunakan Ketakterhinggaan untuk Yang Mustahil

Amaun yang tidak boleh dicapai dimulakan sebagai ketakterhinggaan. Jika amaun kekal tidak terhingga pada akhir, tiada gabungan syiling dapat membentuknya.

Peralihan

Bagi setiap syiling, cuba perbaikkan setiap amaun yang boleh dicapainya. Gunakan satu syiling lebih banyak daripada amaun lebih kecil yang ditinggalkan.

for coin in coins:
    for a in range(coin, amount + 1):
        dp[a] = min(dp[a], dp[a - coin] + 1)

Mengapa Susunan ke Hadapan

Mengimbas amaun ke atas membolehkan dp[a - coin] sudah mengira syiling ini. Begitulah satu syiling boleh menyumbang berulang kali.

Kira Bilangan Cara Sebaliknya

Tukar min+1 kepada jumlah untuk mengira bilangan cara membentuk setiap amaun. Gelung syiling di luar mengelakkan susunan dikira dua kali.

for coin in coins:
    for a in range(coin, amount + 1):
        dp[a] += dp[a - coin]

Baca Hasil

Jawapan anda terdapat dalam dp[amount]. Bagi versi minimum, nilai tidak terhingga bermaksud sasaran itu mustahil dibentuk.

0/1 berbanding Tanpa Had

Ingat satu perubahan ini: kapasiti secara ke belakang bermaksud setiap barang digunakan sekali, manakala arah ke hadapan bermaksud penggunaan tanpa had. Jadual yang sama, imbasan yang bertentangan.

Semakan Pantas

Uji perkara yang menjadikan beg galas itu tanpa had.

Imbas Kembali

Anda menukar gelung ke arah hadapan untuk penggunaan semula tanpa had dan membina pertukaran syiling dengan minimum bagi bilangan syiling paling sedikit atau jumlah bagi keseluruhan cara. 💰

Percuma untuk bermula

Pelajari Persediaan Temu Duga Pengaturcaraan dengan tutor kecerdasan buatan — percuma

Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.

Kursus
90
Pelajaran
360

Soalan Lazim

Adakah pelajaran “DP Tanpa Had dan Pertukaran Syiling” percuma?

Ya — teks penuh “DP Tanpa Had dan Pertukaran Syiling” boleh dibaca secara percuma di web ini. Untuk berlatih secara interaktif menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7, serta membuka kunci baki kursus Persediaan Temu Duga Pengaturcaraan, tingkat taraf kepada CoddyKit PRO. Kursus Persediaan Temu Duga Pengaturcaraan merangkumi sejumlah 4 pelajaran.

Apakah yang akan saya pelajari dalam “DP Tanpa Had dan Pertukaran Syiling”?

Gunakan item seberapa banyak kali yang diperlukan. Anda berlatih Persediaan Temu Duga Pengaturcaraan menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.

Adakah saya memerlukan pengalaman untuk memulakan Persediaan Temu Duga Pengaturcaraan?

Tiada pengalaman terdahulu diperlukan. Pembelajaran Persediaan Temu Duga Pengaturcaraan di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 3 daripada 4.

Berapa lamakah pelajaran “DP Tanpa Had dan Pertukaran Syiling” diambil?

Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.

Bolehkah saya menulis dan menjalankan kod dalam pelajaran Persediaan Temu Duga Pengaturcaraan ini?

Ya. Setiap pelajaran Persediaan Temu Duga Pengaturcaraan menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.

Semua pelajaran dalam kursus ini

  1. Beg Galas 0/1: Ambil atau Tinggalkan
  2. Beg Galas Dioptimumkan Ruang
  3. DP Tanpa Had dan Pertukaran Syiling
  4. Jumlah Subset dan Pembahagian
← Kembali ke Persediaan Temu Duga Pengaturcaraan