CodeBlanks Logo Icon CodeBlanks

Greedy sınırları

Greedy'nin her zaman en iyiyi vermediğini öğrenirsin.

Greedy sınırları

Greedy her zaman en iyiyi vermez. Örnek: [1, 3, 4] ile tutar 6. Greedy [4, 1, 1] (3 para) verir; en iyi [3, 3] (2 para).

Böyle durumlarda dinamik programlama daha iyidir; greedy yanlış seçim yapar.

Bu yüzden greedy'yi uygulamadan önce problemin yapısını doğrulamak gerekir; aksi halde yanlış sonuç alınır.

Karşı örnek

Bir algoritmanın hatalı olduğunu gösteren giriş örneğine karşı örnek denir. Greedy sınırlarını test etmek için kullanılır.

Yukarıdaki [1, 3, 4] ve 6 örneği buna bir örnektir; greedy 3 para verir, optimim 2.

Karşı örnekler, algoritma seçiminde belirleyicidir; yanlış yaklaşımı erken ele verir.

Uygulama Greedy'nin kötü tarafı

greedy_bad(coins, amount) yaz. Greedy çözümün para sayısını döndür. print(greedy_bad([1, 3, 4], 6)) ile 3 yazdır.

Başlangıç kodu

solution.py
def greedy_bad(coins, amount):
    # Greedy kötü örnek

Örnek çözüm

solution.py
def greedy_bad(coins, amount):
    # Greedy kötü örnek
    coins.sort(reverse=True)
    count = 0
    for coin in coins:
        count += amount // coin
        amount = amount % coin
    return count
print(greedy_bad([1, 3, 4], 6))

Beklenen çıktı

3

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 Greedy sınırları: kavramları eşleştir

Kavram Anlamı
counter-example Hatalı gösterir
greedy Yerel en iyi
DP Küresel en iyi
optimim En iyi

2 [1, 3, 4] ve 6 için greedy kaç para verir?

  • 1
  • 2
  • 4
  • 3 Doğru cevap

Açıklama: 3 (4 + 1 + 1).

3 Optimim çözüm

Soru
En az para ile 6: ____ sonucu
Cevap
En az para ile 6: 3, 3 sonucu

Açıklama: 3, 3 doğru.

Orta seviye bölümündeki tüm dersler